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环境中使用
 
 
posted @ 2018-06-26 17:14  杨大白  阅读(171)  评论(0)    收藏  举报