Python模块笔记
模块笔记
(1)time模块
| time.time() | 拿到时间戳 |
| time.localtime([secs]) | 拿到本地时间,即操作系统时间 |
| time.gmtime([secs]) | 拿到英国时间 |
| time.mktime(t) | 将时间对象翻转回时间戳 |
| time.sleep(secs) | 与单片机延时程序类似,等 |
| time.asctime([t]) | 将表示时间的元组或者是时间对象表示为特定的格式,如下 'Mon Jun 25 11:45:26 2018'若没有参数默认传入localtime |
| time.ctimt([secs]) | 与time.astime()效果类似,可以传入时间戳装换为特定的形式 |
| time.strftime(format[,t]) | 把一个代表时间的元组或者时间对象转换为格式化的字符串(有localtime()gmtime()返回) |
| time.strptime(string[,format]) | 把一个字符串转换为时间对象 |
| %a | 本地(locale)简化星期名称 |
| %A | 本地完整星期名称 |
| %b | 本地简化月份名称 |
| %B | 本地完整月份名称 |
| %c | 本地相应的日期和时间表示 |
| %d | 一个月中的第几天(01 - 31) |
| %H | 一天中的第几个小时(24小时制,00 - 23) |
| %I | 第几个小时(12小时制,01 - 12) |
| %j | 一年中的第几天(001 - 366) |
| %m | 月份(01 - 12) |
| %M | 分钟数(00 - 59) |
| %p | 本地am或者pm的相应符 |
| %S | 秒(01 - 61) |
| %U | 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。 |
| %w | 一个星期中的第几天(0 - 6,0是星期天) |
| %W | 和%U基本相同,不同的是%W以星期一为一个星期的开始。 |
| %x | 本地相应日期 |
| %X | 本地相应时间 |
| %y | 去掉世纪的年份(00 - 99) |
| %Y | 完整的年份 |
| %Z | 时区的名字(如果不存在为空字符) |
| %% | ‘%’字符 |
运行结果:
>>> time.time()
1529896965.7994578
>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=6, tm_mday=25, tm_hour=11, tm_min=23, tm_sec=21, tm_wday=0, tm_yday=176, tm_isdst=0)
可利用格式化输出进行输出格式的拼接
>>> b=time.localtime(1452658945)
>>> b
time.struct_time(tm_year=2016, tm_mon=1, tm_mday=13, tm_hour=12, tm_min=22, tm_sec=25, tm_wday=2, tm_yday=13, tm_isdst=0)
>>> time.gmtime()
time.struct_time(tm_year=2018, tm_mon=6, tm_mday=25, tm_hour=3, tm_min=28, tm_sec=33, tm_wday=0, tm_yday=176, tm_isdst=0)
>>> time.mktime(b)
1452658945.0
>>> time.asctime()
'Mon Jun 25 11:45:26 2018'
>>> time.ctime()
'Mon Jun 25 11:55:59 2018'
>>> time.ctime(1548796251)
'Wed Jan 30 05:10:51 2019'
>>> time.strftime('%Y-%m-%d')
'2018-06-25'
>>> time.strftime('%Y-%m-%d' ' %H:%M:%S')
'2018-06-25 15:36:20'
>>> time.strftime('%Y-%m-%d' ' %H:%M:%S',b)
'2016-01-13 12:22:25'
>>> s= time.strftime('%Y-%m-%d' ' %H:%M:%S',b)
>>> time.strptime(s,'%Y-%m-%d' ' %H:%M:%S')
time.struct_time(tm_year=2016, tm_mon=1, tm_mday=13, tm_hour=12, tm_min=22, tm_sec=25, tm_wday=2, tm_yday=13, tm_isdst=-1)
>>> s= time.strftime('%Y-%m-%d' ' %H:%M:%S',b)
>>> c= time.strptime(s,'%Y-%m-%d' ' %H:%M:%S')
>>> time.mktime(c)
1452658945.0
(2)datetime模块
| datetime.datetime.now() | 返回当前的日期类型 |
| datetime.date.fortimestamp() | 把一个时间戳转换为datetime类型 |
| datetime.timedelta() | 时间运算 |
运行结果:
>>> datetime.datetime.now()
datetime.datetime(2018, 6, 25, 16, 3, 24, 55982)
>>> datetime.date.fromtimestamp(1529914024.5652902)
datetime.date(2018, 6, 25)
时间的运算(加减运算)
>>> datetime.datetime.now()
datetime.datetime(2018, 6, 25, 16, 18, 6, 198579)
>>> datetime.datetime.now()-datetime.timedelta(days=2)
datetime.datetime(2018, 6, 23, 16, 18, 58, 605457)
>>> datetime.datetime.now()-datetime.timedelta(hours=2)
datetime.datetime(2018, 6, 25, 14, 19, 37, 979533)
>>> datetime.datetime.now()-datetime.timedelta(minutes=2)
datetime.datetime(2018, 6, 25, 16, 18, 33, 886410)
>>> datetime.datetime.now()+datetime.timedelta(seconds=2)
datetime.datetime(2018, 6, 25, 16, 21, 11, 720191)
时间替换
time.replace()
>>> time=datetime.datetime.now()
>>> time.replace(year=2017,month=5)
datetime.datetime(2017, 5, 25, 16, 23, 59, 363131)
(3)random模块
| random.randrange(range) | 在给定的范围内随机取出某一个数,但不包含右区间 |
| random.randint(range) | 在给定的范围内随机取出某一个数,包含右区间 |
| random.choice(sces) | 返回一个给定数据集合中的随机字符 |
| random .random() | 随机浮点数 |
| random.sample(secs,int) | 从多个字符中选取特定数量的字符(取样),以列表形式返回 |
| random.shuffle(range) | 打乱给定范围顺序 |
运行结果
>>> random.random()
0.32553995799834934
>>> random.randint(1,4)
2
>>> random.randrange(4,9)
6
>>> random.choice('fjfif45')
'j'
>>> random.sample('fjif8',3)
['j', 'i', 'f']
>>> t = list(range(50))
>>> random.shuffle(t)
>>> t
[41, 43, 18, 19, 28, 31, 47, 23, 27, 7, 38, 8, 2, 1, 42, 17, 25, 30, 35, 32, 45, 44, 46, 0, 15, 49, 40, 39, 13, 9, 20, 6, 48, 37, 5, 3, 24, 4, 21, 34, 10, 29, 33, 36, 14, 16, 26, 11, 22, 12]
生成随机验证码
>>> import string
>>> string.hexdigits
'0123456789abcdefABCDEF'
>>> string.digits
'0123456789'
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.octdigits
'01234567'
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> s = string.ascii_letters + string.digits
>>> random.sample(s, 5)
['N', '6', 't', 'Z', 'x']
>>> ''.join(random.sample(s, 5))
'inIbs'
(4)os模块
得到当前的工作目录,即Python脚本工作的目录:os.getcwd()
>>> os.getcwd()
'E:\\python'
返回指定目录下的所有文件的和目录名: os.listdir()
>>> os.listdir()
['.idea', 'DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'python3.dll', 'python36.dll', 'pythonw.exe', 'Scripts', 'tcl', 'Tools', 'vcruntime140.dll', 'venv']
函数用来删除一个文件: os.remove(path)
删除多个目录:os.removedirs(path)
获取绝对路径: os.path.abspath()
>>> os.path.abspath('xuexi')
'E:\\python\\xuexi'
获取当前路径名: os.path.dirname()
>>> os.path.dirname('Toosl')
''
>>> os.path.dirname('E:\\python')
'E:\\'
获取文件名:os.path.basename()
>>> os.path.basename('E:\\python')
'python'
判断给出的路径是否是一个文件 : os.path.isfile(path)
判断给出路径是否是一个目录: os.path.isdir(path)
判断给出的路径是否是绝对路径:os.path.isabs(path)
判断给出的路径是否存在: os.path.exists(path)
(5)sys模块
打印Python的版本: sys.version
>>> sys.version
'3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit (Intel)]'
最大的int值: sys.maxsize
>>> sys.maxsize
2147483647
返回模块的搜索路径,初始化时使用Python的环境变量的值
>>> sys.path
['', 'E:\\python\\python36.zip', 'E:\\python\\DLLs', 'E:\\python\\lib', 'E:\\python', 'E:\\python\\lib\\site-packages']
返回当前操作系统的版本 : sys.platform
>>> sys.platform
'win32
标准化输出:sys.stdout
>>> sys.stdout
<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
标准输出:sys.stdout.write(secs)
>>> sys.stdout.write('hello')
hello5 #数字为输入的字符个数
标准输入:sys.stdin.readline()/sys.stdin.read() #和文件操作的一样
>>> sys.stdin.readline()
hello
'hello\n'
设置最大递归层次:sys.getrecursionlimit()
>>> sys.getrecursionlimit()
1000 #最大队规层次为1000
获取默认编码:sys.getdefaultencoding()
>>> sys.getdefaultencoding()
'utf-8'
获取内存数据存到文件里的默认编码:sys.getfilesystemencoding()
>>> sys.getfilesystemencoding()
'utf-8'
(6)shutil模块
高级文件、文件夹、压缩包处理模块
shutil.copyfileobj(fsrc, fdst[, length])
将文件内容拷贝到另一个文件中,需打开文件
import shutil
f = open('conf.ini','r')
f1 = open('conf_new1.ini','w')
shutil.copyfileobj(f, f1)
shutil.copyfile(src, dst)
拷贝文件,不需要打开文件
(7)json模块和pickle模块
序列化: json.dumps()
序列化且存入文件中,fp传入的不能时文件名必须是文件对象: json.dump(obj,fp)
import json
usedata = ['xiaoyang','428693','xiaoli','655325','xiaohong','528145']
json.dumps(usedata)
f = open('usedata3.json', 'w')
json.dump(usedata, f)
usedata3.json中的格式:["xiaoyang", "428693", "xiaoli", "655325", "xiaohong", "528145"]
json.loads()
json.load()
两者区别如下代码:
usedata = ['xiaoyang','428693','xiaoli','655325','xiaohong','528145']
a = json.dumps(usedata)
b = json.loads(a)
print(b)
运行结果:['xiaoyang', '428693', 'xiaoli', '655325', 'xiaohong', '528145']
f = open('usedata3.json', 'r')
data = json.load(f)
print(data)
运行结果:['xiaoyang', '428693', 'xiaoli', '655325', 'xiaohong', '528145']
不能反序列化多次,只能load一次
json模块只能序列化python的基本数据类型
pickle.dump()
pickle.dumps()
import pickle
usedata = ['xiaoyang','428693','xiaoli','655325','xiaohong','528145']
p = pickle.dumps(usedata)
print(p)
运行结果:b'\x80\x03]q\x00(X\x08\x00\x00\x00xiaoyangq\x01X\x06\x00\x00\x00428693q\x02X\x06\x00\x00\x00xiaoliq\x03X\x06\x00\x00\x006
#以字节形式序列化
f = open('usedata4.pkl', 'wb') #只能是wb模式,否则会报错
pickle.dump(usedata, f)
pickle.loads()
pickle.load()
usedata = ['xiaoyang','428693','xiaoli','655325','xiaohong','528145']
p = pickle.dumps(usedata)
data = pickle.loads(p)
print(data)
f = open('usedata4.pkl', 'rb')
data = pickle.load(f)
print(data)
都可以输出结果:['xiaoyang', '428693', 'xiaoli', '655325', 'xiaohong', '528145']
json:支持str,int ,tuple,list,dict,可以和其他语言交互
pickle:支持Python中所有数据类型,只能在Python环境中使用

浙公网安备 33010602011771号