标签:增加 数据交互 未来 两种 一段 linu time模块 文本 获取
? 包是一种形式,本质就是一个含有.py文件的文件夹。
? 模块的第一个版本只有10个功能,但是未来在扩展版本的时候,模块名和用法应该最好不要去修改,但是这只是对使用者友好,而由于版本扩展,文件越来越大,模块设计者对模块的管理、维护会越来越复杂,因此我们可以使用包来扩展模块的功能。
? 导入模块发生的三件事:
导入包发生的三件事:
? 导入包就是在导入包下的.py,并且可以使用以下两种方式导入:
? 我们如果要扩展aaa.py模块,需要建立一个aaa的目录文件,并且删除aaa.py文件,将aaa.py修改成m1.py和m2.py两个文件,让模块的功能使用方法不改变。
# aaa/.py
func1 = 111
func2 = 222
func3 = 333
func4 = 444
func5 = 555
func6 = 66
? 由于在__init__.py
中定义了func1,因此我们可以在run.py文件中导入func1,但是这个func1并不是我们想要的func1,因此需要修改__init__.py
文件,又由于执行文件run.py的环境变量不为aaa,因此直接使用import导入m1会报错,因此使用from导入。
# aaa/.py
from aaa.m1 import func1
from aaa.m2 import func2
# run.py
import aaa
print(aaa.func1())
print(aaa.func2())
? aaa.bbb指向aaa内部的文件夹bbb包,如果我们需要导入bbb这个包。
# bbb/.py
from aaa import bbb
# run.py
import aaa
print(aaa.bbb)
# bbb/.py
from aaa.bbb import m3
# run.py
import aaa
aaa.bbb.m3
import aaa.bbb.m3.f3
错误? time模块:支持三种不同形式的时间,不同形式的时间之间可以转换.
import time
print(time.time())
1565951647.1459594
import time
print(time.strftime('%Y-%m-%d %X'))
2019-08-16 18:38:09
import time
print(time.localtime())
print(time.gmtime())
time.struct_time(tm_year=2019, tm_mon=8, tm_mday=16, tm_hour=18, tm_min=46, tm_sec=37, tm_wday=4, tm_yday=228, tm_isdst=0)
time.struct_time(tm_year=2019, tm_mon=8, tm_mday=16, tm_hour=10, tm_min=46, tm_sec=37, tm_wday=4, tm_yday=228, tm_isdst=0)
import time
print(time.strftime('%Y-%m-%d %X', time.localtime()))# 结构化时间转格式化时间
print(time.strptime('2019-08-16 10:30:44', '%Y-%m-%d %X'))# 格式化时间转结构化时间
print(time.mktime(time.localtime()))# 结构化时间转时间戳
print(time.localtime(time.time()))# 时间戳转结构化时间
? datetime模块可以看成是时间加减的模块。
import datetime
print(datetime.datetime.now())
2019-08-16 18:58:58.357782
import datetime
print(datetime.datetime.now()+datetime.timedelta(2))
2019-08-18 19:03:59.046982
import datetime
print(datetime.datetime.now()+datetime.timedelta(hours=12))
2019-08-17 07:06:07.106167
import datetime
print(datetime.datetime.now().replace(hour = 10,second = 5,year = 1))
0001-08-16 10:11:05.001715
? os模块负责程序与操作系统的交互,提供了访问操作系统的接口,多用于文件处理。
import os
print(os.getcwd()) # 获取当前文件目录
os.mkdir('m2') # 创建一个文件夹
os.rmdir('m2') # 删除文件夹
# # *************(经常用到)
res = os.listdir(r'D:\...) # 列出所有文件
print(res)
__file__只有pychamr才提供,python本身不支持
print('os.path.abspath(__file__):',os.path.abspath(__file__)) # 支持不同的平台(windows,ios,andirod,linux,unix)
print('__file__:',__file__)
print(os.path.exists('01 包.py')) # 文件不存在False,存在True
print(os.path.isfile('01 包.py')) # 是否为文件
print(os.path.isdir('01 包.py')) # 是否为文件夹
# # ********(经常使用)
# # 支持不同的平台(windows,ios,andirod,linux,unix)
res = os.path.join(r'D:\...') # 拼接文件路径
res = os.path.join(r'D:\...') # 拼接文件路径
print(r'D:\上海Python11期视频\python11期视频\day 17\m1\bb'+'\m5.py')
print(res)
# # ******* (经常使用)
print(os.path.abspath(__file__))
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
? sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。
import sys
print(sys.argv) # 接收参数(用cmd执行文件时运行才有效)
print(sys.modules) #返回系统导入的模块字段,key是模块名,value是模块
? jason和pickle都是序列化的方式,序列化就是把对象从内存中取出变成可储存或者传输的过程。
? 序列化的优点:
? Json序列化并不是python独有的,json序列化在java等语言中也会涉及到,因此使用json序列化能够达到跨平台传输数据的目的。
import json
dic = {'a': 1, 'b': 'abc', 'c': None}
data = json.dumps(dic) # 序列化到内存中
print(data,type(data)) # 单引号全部变成双引号
data = json.loads(data) # 从内存中获取json串
print(data,type(data))
{"a": 1, "b": "abc", "c": null} <class 'str'>
{'a': 1, 'b': 'abc', 'c': None} <class 'dict'>
? Pickle序列化和所有其他编程语言特有的序列化问题一样,它只能用于Python,并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,即不能成功地反序列化也没关系。但是pickle的好处是可以存储Python中的所有的数据类型,包括对象,而json不可以。
? hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值。
hash值的特点:
只要传入的内容一样,得到的hash值一样,可用于非明文密码传输时密码校验。
不能由hash值返解成内容,即可以保证非明文密码的安全性。
只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的,可以用于对文本的哈希处理。
hashlib能将数字变成固定的字符串, 相同的字符串哈希后结果一样并且具有 叠加性。
import hashlib
m = hashlib.md5() # 固定的写法
m.update(b'123456')
print(m.hexdigest())
e10adc3949ba59abbe56e057f20f883e
hmac模块:对密码加密,可以加盐,相当于给密码加了密钥。
import hmac
m = hmac.new(b'abc') # 加盐
m.update(b'123456')
print(m.hexdigest())
8c7498982f41b93eb0ce8216b48ba21d
标签:增加 数据交互 未来 两种 一段 linu time模块 文本 获取
原文地址:https://www.cnblogs.com/tangceng/p/11366072.html