python常用模块

python常用模块 import(modulename)导入模块math import math1、向上取整math.ceil() num 3.14 math.ceil(num) 42、向下取整math.floor() num 5.9 math.floor(num) 5 #或 int(num) 5datetimefrom datetime import datetime1、获取当前格式化日期 print(datetime.now()) 2017-09-30 09:12:31.0703122、获取指定日期和时间 dt datetime(2017, 10, 1, 6, 30) print(dt) 2017-10-01 06:30:003、把格式化时间转换为时间戳。python的tempstamp是一个浮点数。小数位表示毫秒数 dt datetime(2017, 9, 30, 9, 48) dt.timestamp() 1506736080.04、格式化时间戳 t 1506736080.0 print(datetime.fromtimestamp(t)) 2017-09-30 09:48:00 注datetime.utcfromtimestamp(t)直接转换到utc标准时区的时间5、datetime转换为str now datetime.now() datetime.now().strftime(%Y-%m-%d %H:%M:%S) 2018-03-03 22:06:446、datetime加减 from datetime import datetime, timedelta now datetime.now() print(now) 2017-09-30 10:36:54.148904 print(now timedelta(hours1)) 2017-09-30 11:36:54.148904 print(now timedelta(days1)) 2017-10-01 10:36:54.148904 (datetime.now()-timedelta(days1, hours1, minutes1, seconds1)).strftime(%Y-%m-%d %H:%M:%S) 2018-03-02 21:15:247、datetime.now().timetuple()返回当前时间struct_time格式 datetime.now().timetuple() time.struct_time(tm_year2017, tm_mon10, tm_mday1, tm_hour19, tm_min45, tm_sec29, tm_wday6, tm_yday274, tm_isdst-1)8、datetime.now().replace()传入的参数会替换结果时间如果什么都没传则返回调用replace()的时间对象 datetime.now().replace(2017,10,1) datetime.datetime(2017, 10, 1, 19, 49, 53, 838155)timeimport time1、time.localtime() time.localtime() time.struct_time(tm_year2017, tm_mon9, tm_mday30, tm_hour11, tm_min28, tm_sec1, tm_wday5, tm_yday273, tm_isdst0) 索引index 属性attribute 值values 0 tm_year年 2017 1 tm_mon月 1-12 2 tm_mday日 1-31 3 tm_hour时 0-23 4 tm_min分 0-59 5 tm_sec秒 0-59 6 tm_wday周 0-60是周日 7 tm_yday 一年中第几天 8 tm_isdst夏令制2、time.sleep(second)让程序暂停second秒后运行3、time.time()返回当前时间戳 time.time() 1506742662.6955894、获取格式化时间 print(time.strftime(%Y-%m-%d %H:%M:%S, time.localtime())) 2017-09-30 11:41:215、time.clock()该函数有两个功能在第一次调用的时候返回的是程序运行的实际时间以第二次之后的调用返回的是自第一次调用后,到这次调用的时间间隔在win32系统下这个函数返回的是真实时间wall time而在Unix/Linux下返回的是CPU时间。6、指定日期转换为时间戳import time t 2017-11-24 17:30:00 #将其转换为时间数组 timeStruct time.strptime(t, %Y-%m-%d %H:%M:%S) #转换为时间戳: timeStamp int(time.mktime(timeStruct)) print(timeStamp) #结果 15115158007、指定时间戳格式化timeStamp 1511515800 localTime time.localtime(timeStamp) strTime time.strftime(%Y-%m-%d %H:%M:%S, localTime) print(strTime) 结果 2017-11-24 17:30:00sysimport sys1、sys.argv获取传入脚本的参数第一个参数是脚本本身test.py print(sys.argv) F:\python\testpython test.py 1 2 3 [test.py, 1, 2, 3]2、sys.path返回模块的搜索路径从当前文件所在路径开始搜索 sys.path [, D:\\Software\\python36.zip, D:\\Software\\DLLs, D:\\Software\\lib, D:\\Software, D:\\Software\\lib\\site-packages]3、sys.version返回python版本信息 sys.version 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)]4、sys.exit()退出程序和exit()功能一样 sys.exit(good bye) good bye C:\Users\HONOUR-CYY5、sys.platform返回操作系统平台名称 sys.platform win326、sys.stdout.write(str)在屏幕上打印数据 sys.stdout.write(hello) hello sys.stdout.write(\r) #刷新之前输出到屏幕的内容7、sys.stdout.flush()刷新缓冲区的内容到屏幕pickle序列化把变量从内存中变成可存储或传输的过程称之为序列化import pickle1、pickle.dumps()把任意对象序列化成一个bytes d dict(namechenyy, age20) a pickle.dumps(d) a b\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x06\x00\x00\x00chenyyq\x02X\x03\x00\x00\x00ageq\x03K\x14u.pickel.dump()直接把一个序列化对象写入文件 f open(dump.txt, wb) pickle.dump(d, f) f.close()2、pickel.loads()反序列化出对象 pickle.loads(a) {name: chenyy, age: 20}pickle.load()方法从一个file-like Object中直接反序列化出对象 f open(dump.txt, rb) d pickle.load(f) f .close() d {name: chenyy, age: 20}json import json1、json.dumps()把对象转化为一个字符串 d dict(namechenyy, age18) json.dumps(d) {name: chenyy, age: 18} json.dump()方法可以直接把json写入一个file-like Object2、json.loads()把json反序列化为python对象 json_str json.dumps(d) json.loads(json_str ) {name: chenyy, age: 18}json.load()方法从file-like Object中读取字符串并反序列化os1、os.getcwd()获取当前工作目录 os.getcwd() C:\\Users\\HONOUR-CYY2、os.chdir(dir)改变当前脚本工作目录 os.chdir(D:) os.getcwd() D:\\3、os.pardir返回当前目录的父目录’…’ os.pardir ..4、os.curdir返回当前目录’.’ os.curdir .5、os.makedirs(dir)递归生成多层目录 os.makedirs(a/b/c)6、os.removedirs(dir)递归向上删除空目录。如果目录非空则抛出异常 os.removedirs(D:/a/b/c)7、os.mkdir(dir)生成目录os.mkdir(b)8、os.rmdir(dir)删除一个空目录9、os.listdir()返回指定目录下的所有文件和子目录包括隐藏文件以列表形式返回。只会获取一层10、os.remove(file)删除一个文件11、os.rename(‘oldname’,‘newname’)重命名文件或目录12、os.stat()获取文件或目录信息 os.stat(./d.txt) os.stat_result(st_mode33206, st_ino562949953466137, st_dev462496, st_nlink1, st_uid0, st_gid0, st_size12, st_atime1506996315, st_mtime1506996321, st_ctime1506996315)13、os.sep返回操作系统特定的分隔符win下为’\’Linux下为‘/’ os.sep \\14、os.linesep返回操作系统的行终止符win下为\r\nLinux下为\n os.linesep \r\n16、os.name返回当前操作系统win os.name nt linux os.name posix17、os.system(command)可以用来直接运行shell命令 os.system(tree) 卷 文档 的文件夹 PATH 列表 卷序列号为 0000008E 0007:0EA0 E:. └─d └─b └─c 018、os.environ返回系统环境变量19、os.path.abspath(path)返回path规范化的绝对路径 os.path.abspath(./d.txt) E:\\test\\d.txt20、os.path.split(path)将path分割成目录和文件名以元组返回 os.path.split(D:/test/d.txt) (D:/test, d.txt) os.path.split(F:/python/a) (F:/python, a)21、os.path.dirname(path)返回path的目录即os.path.split(path)获取的第一个元素 os.path.dirname(D:/test/d.txt) D:/test os.path.dirname(F:/python/a) F:/python22、os.path.basename(path)返回os.path.split(path)获取的第二个元素 os.path.basename(D:/test/d.txt) d.txt os.path.basename(F:/python/a) a23、os.path.exists(path)判断path是否存在返回布尔值 os.path.exists(E:/test/d) True os.path.exists(E:/test/d.txt True24、os.path.isabs(path)是否为绝对路径返回布尔值 os.path.isabs(E:/test/d.txt) True os.path.isabs(./x.txt) False25、os.path.isfile(file)判断文件是否存在返回布尔值。目录返回False os.path.isfile(./d.txt) True26、os.path.isdir(dir)判断目录是否存在返回布尔值。文件返回False os.path.isdir(./d) True27、os.path.join(path1[, path2…])将多个路径组合后返回 os.path.join(/data,myproject,chenyy) /data/myproject/chenyy28、os.path.getatime(path)返回path所指向的文件或者目录的最后存取时间浮点数 os.path.getatime(./d.txt) 1506996315.76682529、os.path.getmtime(path)返回path所指向的文件或目录的最后修改时间浮点数 os.path.getmtime(./d.txt) 1506996321.781270330、os.path.getctime(path)返回path的创建时间浮点数 os.path.getctime(./d.txt) 1506996315.76682531、os.path.getsize(file)返回文件大小如果是目录则返回0 os.path.getsize(./d.txt) 12 os.path.getsize(./d) 032、os.path.splitext(file) os.path.splitext(log.text) 以元组形式返回文件名和后缀 (log, .text)33、os.startfile(path)windows中特有的函数启动外部程序hashlib import hashlib md5 hashlib.md5() md5.update(123456.encode(utf-8)) md5.hexdigest() e10adc3949ba59abbe56e057f20f883e 如果数据量很大可以分块多次调用update()最后计算的结果是一样的 md5 hashlib.md5() md5.update(123.encode(utf-8)) md5.update(456.encode(utf-8)) md5.hexdigest() e10adc3949ba59abbe56e057f20f883econfigparser解析配置文件假设有个ini的配置文件内容如下[cyy] age 18 name cyy [chenyy] age : 24 name : chenyy import configparser con configparser.ConfigParser() con.read(ini, encodingutf-8) [ini]con.sections()获取所有节点 con.sections() [cyy, chenyy]con.options(section)获取指定节点下所有键 con.options(cyy) [age, name]con.items(section)获取指定节点下所有键值对 con.items(chenyy) [(age, 24), (name, chenyy)]con.get(section,key)获取指定节点下指定键对应的值 con.get(chenyy,age) 24 con.getint(section,key) #把返回的值转换为整型 con.getfloat(section,key) #把返回的值转换为浮点型 con.getboolean(section,key) #把返回的值转换为布尔型con.has_section(section)检查节点是否存在返回布尔值 con.has_section(abc) False con.has_section(cyy) Truecon.add_section(section)con.write(open(file,‘w’))添加节点 con.add_section(abc) con.write(open(ini,w))con.remove_section(section)con.write(open(file,‘w’))删除节点返回布尔值删除成功后需要写入保存 con.remove_section(abc) True con.write(open(ini,w))con.has_option(section,key)检查节点下的key是否存在返回布尔值 con.has_option(cyy,age) Truecon.set(section,key,value)con.write(open(file,‘w’))设置指定节点下的键值对 con.set(chenyy,name,chenyy) con.write(open(ini,w))con.remove_option(section,key)con.write(open(file,‘w’))删除指定节点下的键返回布尔值删除成功后需要写入文件保存 con.remove_option(chenyy,name) True con.write(open(ini,w))shutil文件、文件夹、压缩包处理模块 import shutil1、shutil.copyfileobj(oldfile_object,newfile_object)将文件内容拷贝到另一个文件中 import shutil shutil.copyfileobj(open(ini,r),open(new,w))2、shuutil.copyfile(filepath,filepath)拷贝文件文件不存在则创建 shutil.copyfile(d.txt,./d/d.txt) ./d/d.txt3、shutil.copymode()仅拷贝权限内容组用户均不变4、shutil.copystat()仅拷贝文件的状态信息包括mode bits, atime, mtime, flags5、shutil.copy()拷贝文件和权限6、shutil.copy2()拷贝文件和状态7、shutil.copytree(olddir, newdir, symlinksFalse, ignoreNone)递归拷贝目录下的所有文件和文件夹,newdir不存在则创建参数ignoreshutil.ignore_patterns(pattern)代表不拷贝正则匹配项匹配到的文件或目录8、shutil.rmtree(dir)递归删除目录下的所有文件和文件夹9、shutil.move(olddir, newdir)递归移动目录也可重命名目录类似linux的mv10、shutil.make_archive(filename, format, root_dir,owner,group)压缩文件返回压缩后的压缩包绝对路径filename压缩包的文件名可以指定路径format压缩包种类zip,tar,bztar,gztarroot_dir需要压缩文件的路径owner用户默认当前用户、group组默认当前组 shutil.make_archive(../www,gztar,root_dir./o) E:\\www.tar.gzzipfile import zipfile压缩文件z zipfile.ZipFile(zipname,format)z.write(filename)z.close()format文件写入模式‘w’, ‘a’。w方式会清空压缩包里的所有内容 import zipfile z zipfile.ZipFile(test.zip, a) z.write(./d.txt) #如果写入一个目录则只会写入一个空目录不会写入该目录下其它文件或文件夹 z.close()解压文件z zipfile.ZipFile(zipname,format)z.extractall()z.close()解压过后压缩包文件仍然在 zip zipfile.ZipFile(./test.zip,r) zip.extractall() zip.close()z zipfile.ZipFile(zipname,format)z.namelist()z.close()以列表返回压缩包里的所有文件和目录 z zipfile.ZipFile(test.zip,r) z.namelist() [new, d/]z zipfile.ZipFile(zipname,format)z.extract(file)z.close()解压压缩包里的指定文件或目录 z zipfile.ZipFile(test.zip,r) z.extract(new) E:\\test\\new z.close()tarfile import tarfile压缩tar tarfile.open(tarname,format) tar.add(filepath,arcnamealias) tar.close() #arcname把文件压缩进压缩包后可以换个文件名 #解压 tar tarfile.open(tarname,format) tar.extractall() tar.close()logging记录日志 import logginglogging.basicConfig( filenamelog.log, format%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s, datefmt%Y-%m-%d %H:%M:%S %p, levellogging.INFO ) #level日志等级 CRITICAL 50 FATAL CRITICAL ERROR 40 WARNING 30 WARN WARNING INFO 20 DEBUG 10 NOTSET 0 logging.critical() logging.fatal() logging.error() logging.waring() logging.info() logging.debug()collectionsnamedtuple(name,[属性list])namedtuple是一个函数它用来创建一个自定义的tuple对象并且规定了tuple元素的个数并可以用属性而不是索引来引用tuple的某个元素 from collections import namedtuple P namedtuple(Point, [x, y]) p P(1, 2) p.x 1 p.y 2deque使用list存储数据时按索引访问元素很快但是插入和删除元素就很慢了因为list是线性存储数据量大的时候插入和删除效率很低。deque是为了高效实现插入和删除操作的双向列表适合用于队列和栈 from collections import deque q deque([a, b, c]) q.append(d) q.appendleft(o) q deque([o, a, b, c, d])deque除了实现list的append()和pop()外还支持appendleft()和popleft()defaultdictdefaultdict创建的字典在引用的key不存在时返回一个默认值 from collections import defaultdict dd defaultdict(lambda: N/A) dd[key1] a dd[key1] a dd[key2] N/AOrderedDictOrderedDict会根据插入key的顺序排序 from collections import OrderedDict od OrderedDict() od[a] 1 od[c] 2 od[b] 3 od OrderedDict([(a, 1), (c, 2), (b, 3)])itertoolschain()chain()可以把一组迭代对象串联起来形成一个更大的迭代器 import itertools for i in itertools.chain(abc, xyz, def): ... print(i) ... a b c x y z d e f原文地址