1、time模块 import time time.time() # 时间戳 1518141499.9243798 time.strftime('%Y-%m-%d %X') # 格式化的时间字符串 '2018-02-09 09:59:24' time.localtime() # 本地时区的struct_time time.struct_time(tm_year=2018, tm_mon=2, tm
1、time模块
>>> import time>>> time.time() # 时间戳
1518141499.9243798
>>> time.strftime('%Y-%m-%d %X') # 格式化的时间字符串
'2018-02-09 09:59:24'
>>> time.localtime() # 本地时区的struct_time
time.struct_time(tm_year=2018, tm_mon=2, tm_mday=9, tm_hour=10, tm_min=34, tm_sec=0, tm_wday=4, tm_yday=40, tm_isdst=0)
>>> time.gmtime() # 本地时区的struct_time
time.struct_time(tm_year=2018, tm_mon=2, tm_mday=9, tm_hour=2, tm_min=34, tm_sec=18, tm_wday=4, tm_yday=40, tm_isdst=0)
时间之间的转换
格式化的字符串时间--->strptime--->结构化的时间--->mktime--->时间戳
时间戳--->localtime,gmtime--->结构化的时间--->strftime--->格式化的字符串时间
import timet1 = time.time() # 时间戳
print(t1)
t2 = time.localtime(t1) # 将时间戳转换为结构化的时间
print(t2)
t3 = time.strftime('%Y-%m-%d %X', t2) # 将结构化的时间转换为格式化的字符串时间
print(t3)
old_time = '2001-04-11 22:26:24'
t4 = time.strptime(old_time, '%Y-%m-%d %X') # 将格式化的字符串时间转换为结构化的时间
print(t4)
t5 = time.mktime(t4) # 将格式化的时间转换为时间戳
print(t5)
运行结果:
1518153730.046175
time.struct_time(tm_year=2018, tm_mon=2, tm_mday=9, tm_hour=13, tm_min=22, tm_sec=10, tm_wday=4, tm_yday=40, tm_isdst=0)
2018-02-09 13:22:10
time.struct_time(tm_year=2001, tm_mon=4, tm_mday=11, tm_hour=22, tm_min=26, tm_sec=24, tm_wday=2, tm_yday=101, tm_isdst=-1)
986999184.0
1. 结构化的时间--->asctime--->%a %b %d %H %M %S %Y
把一个表示时间的元组或者struct_time表示为这种形式:Fri Feb 9 12:50:11 2018
如果没有参数,将会将time.localtime()作为参数传入
2. 时间戳--->ctime--->%a %b %d %H %M %S %Y
把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式
如果参数未给或者为None的时候,将会默认time.time()为参数
它的作用相当于time.asctime(time.localtime(secs))
t6 = time.asctime()print(t6)
t7 = time.ctime(986999184.0)
print(t7)
运行结果:
Fri Feb 9 13:18:34 2018
Wed Apr 11 22:26:24 2001
2、datetime模块
#时间加减import datetime
print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
print(datetime.date.fromtimestamp(time.time()) ) # 时间戳直接转成日期格式 2016-08-19
print(datetime.datetime.now() )
print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
c_time = datetime.datetime.now()
print(c_time.replace(minute=3,hour=2)) #时间替换
3、random模块
>>> import random>>> random.random() #(0,1)----float 大于0且小于1之间的小数
0.006142880071465462
>>> random.randint(1,3) #[1,3] 大于等于1且小于等于3之间的整数
3
>>> random.randrange(1,3) #[1,3) 大于等于1且小于3之间的整数
1
>>> random.choice([1,'3',[4,5]]) #1或者23或者[4,5]
'3'
>>> random.sample([1,'23',[4,5]],2) #列表元素任意2个组合
['23', [4, 5]]
>>> random.uniform(1,3) #大于1小于3的小数,如1.927109612082716
2.269152764705888
>>> item = [1,3,5,7,9]
>>> random.shuffle(item) #打乱item的顺序,相当于"洗牌"
>>> print(item)
[9, 3, 5, 1, 7]
"""
random做随机数
"""
import random
def make_code(n):
res = ''
for i in range(n):
s1 = chr(random.randint(65, 90)) # 字母A-Z
s2 = str(random.randint(0, 9)) # 数字0-9
s3 = chr(random.randint(97, 122)) # 字母a-z
res += random.choice([s1, s2, s3])
return res
print(make_code(7))
4、OS模块
OS模块是与操作系统交互的一个接口
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: ('.')
os.pardir 获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") 运行shell命令,直接显示
os.environ 获取系统环境变量
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名二元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小
1.在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为反斜杆
>>> os.path.normcase('c:/windows\\system32\\')'c:\\windows\\system32\\'
2. 规范化路径,如..和/
>>> os.path.normpath('c://windows\\System32\\../Temp/')'c:\\windows\\Temp'
>>> a='/Users/jieli/test1/\\\a1/\\\\aa.py/../..'
>>> print(os.path.normpath(a))
/Users/jieli/test1
3.os路径处理
#方式一:推荐使用import os
#具体应用
import os,sys
possible_topdir = os.path.normpath(os.path.join(
os.path.abspath(__file__),
os.pardir, #上一级
os.pardir,
os.pardir
))
sys.path.insert(0,possible_topdir)
#方式二:不推荐使用
os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
5、sys模块
1. sys.argv 命令行参数List,第一个元素是程序本身路径2. sys.exit(n) 退出程序,正常退出时exit(0)
3. sys.version 获取Python解释程序的版本信息
4. sys.maxint 最大的Int值
5. sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
6. sys.platform 返回操作系统平台名称
6、shutil模块
7、json模块
什么是序列化? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化
为什么要序列化?
持久保存状态
跨平台数据交互
序列化之后,不仅可以把序列化后的内容写入磁盘,还可以通过网络传输到别的机器上,如果收发的双方约定好实用一种序列化的格式,那么便打破了平台/语言差异化带来的限制,实现了跨平台数据交互。
示例代码
import jsondic = {'name': 'alvin',
'age': 23,
'sex': 'male'}
with open('a.json','w') as f:
f.write(json.dumps(dic))
with open('a.json','r') as f:
f_json = json.loads(f.read())
print(f_json)
import json
#dct="{'1':111}"#json 不认单引号
#dct=str({"1":111})#报错,因为生成的数据还是单引号:{'one': 1}