python模块(2)
1.OS模块
1 print(os.getcwd()) #获取当前工作目录 2 os.chdir('E:\python练习\python35学习') #更改目录 3 print(os.getcwd())
E:\python练习\python35学习\Day5
E:\python练习\python35学习
1 print(os.curdir) #当前目录 2 print(os.pardir) #父级(上一级)目录 3 print(os.sep) #路径分隔符 4 print(os.pathsep) #文件路径分割符 5 print(os.name) #当前使用平台名称,win-->'nt',Linux-->'posix' 6 print(os.environ) #环境变量(以字典方式显示)
.
..
\
;
nt
(略)
os.makedirs(r'E:\a\b\c\d') #递归创建多级目录 os.removedirs(r'E:\a\b\c\d') #从后面逐级判断目录是否为空,若为空则删除 os.mkdir(r'E:\a') #一次只能创建一级目录 os.rmdir(r'E:\a') #一次只能删除一级目录,若为空删除,否则不删 os.remove(r'E:\CLion\CLion 2017.2.2\build.txt') #删除文件
1 print(os.listdir(r'E:\CLion\CLion 2017.2.2')) #显示指定目录下的所有目录和文件,包括隐藏文件 2 os.rename(r'E:\python练习\fib.py',r'E:\python练习\fibnan1.py') #重命名 3 print(os.stat(r'E:\python练习')) #文件或目录状态信息
['bin', 'help', 'jre64', 'lib', 'license', 'plugins']
os.stat_result(st_mode=16895, st_ino=18295873486193234, st_dev=2227732002, st_nlink=1, st_uid=0, st_gid=0, st_size=4096, st_atime=1516964219, st_mtime=1516964219, st_ctime=1499412376)
1 os.system('ifconfig') #运行shell命令
1 print(os.path.abspath(__file__)) #绝对路径 2 print(os.path.dirname('E:\python练习\python35学习\Day5\os_test.py')) #最后一个\之前的 3 print(os.path.basename('E:\python练习\python35学习\Day5')) #最后一个\之后的 4 print(os.path.split('E:/python练习/python35学习/Day5/os_test.py')) #将文件与目录拆分开,形成元组 5 print(os.path.exists('E:/python练习/python35学习/Day5')) #判断文件或目录是否存在 6 print(os.path.isabs('python练习/python35学习/Day5/os_test.py')) #判断是否是绝对路径 7 print(os.path.isfile('E:/python练习/python35学习/Day5/os_test.py')) #判断是否是文件 8 print(os.path.isdir('E:/python练习/python35学习/Day5/os_test.py')) #判断是否是目录 9 print(os.path.join(r'E:/python练习/python35学习/Day5/',r'Day5.txt')) #路径连接 10 print(os.path.getatime('E:/python练习/python35学习/Day5/os_test.py')) #最后的存取时间access 11 print(os.path.getmtime('E:/python练习/python35学习/Day5/os_test.py')) #最后的修改时间modify
2.shutil模块(主要用于文件复制)
先创建file对象,再进行复制
1 import shutil 2 f1=open('本章小结') 3 f2=open('小结2','w') 4 shutil.copyfileobj(f1,f2) #复制文件对象(需要先open)
直接复制
1 shutil.copyfile("小结2","笔记") #复制文件(无需先open) 2 shutil.copy("笔记","笔记2")
复制文件状态
1 shutil.copystat("本章小结","笔记") #修改状态:atime,mtime
级联复制or级联删除
1 shutil.copytree('a','a1') #级联复制目录 2 shutil.rmtree('a1') #删除多级目录
由目录生成压缩包 make_archive(base_name,format,root_dir)
# base_name:生成压缩包的路径、文件名,
# format:压缩包的种类:zip,tar,gztar,batar
# root_dir:要压缩的文件路径(默认当前目录)
shutil.make_archive('www','zip','a') #生成压缩包
3.json与pickle模块(序列化中应注意的问题,dump一次,load一次(相当于文件中始终只有最新一次的‘快照’))
json:解决了不同语言,不同平台之间的数据交换
pickle:python自己的数据类型进行交互,支持所有python数据类型
json序列化:
1 info={ 2 'name':'cecelia', 3 'age':23, 4 } 5 6 j_str=json.dumps(info) #将数据通过特殊的形式转化为所有语言都认识的字符串 7 print(j_str)
1 with open('info1','w',encoding='utf-8') as f: 2 json.dump(info,f) #将数据通过特殊的形式转化为所有语言都认识的字符串,并写入文件 3 f.close()
pickle序列化:
1 import pickle 2 def test(): 3 print('this is for our test') 4 info = { 5 'name': 'cecelia', 6 'age': 23, 7 'func': test 8 } 9 p_str=pickle.dumps(info) #pickle.dump将数据转化为只有python认识的字符串 10 print(p_str)
1 with open('info','wb') as f: 2 pickle.dump(info,f) #pickle.dump将数据转化为只有python认识的字符串,并写入文件 3 f.close()
json反序列化:
1 import json 2 3 with open('info1','r') as f: 4 data=json.load(f) 5 f.close() 6 7 print(data['name'])
pickle反序列化:
1 import pickle 2 3 def test(): 4 print(' testing ') 5 6 with open('info','rb') as f: 7 data=pickle.load(f) 8 f.close() 9 10 print(data['func']())
4.shelve模块:对pickle的进一步封装
写入:
1 import shelve 2 import datetime 3 4 d=shelve.open('shelve testing') 5 6 info={ 7 "age":22, 8 "tel":12332973 9 } 10 name=['alex','bob','cindy'] 11 12 d['name']=name 13 d['info']=info 14 d['date']=datetime.datetime.now()
读取:
1 import shelve 2 import datetime 3 4 d=shelve.open('shelve testing') 5 6 print(d.get('name')) 7 print(d.get('info')) 8 print(d.get('date'))