模块(os、json、pickle)
os模块
主要与操作系统打交道,是与操作系统交互的一个窗口
1. os.mkdir('dirname')
创建单级目录dirname
2. os.makedirs('dirname1/dirname2')
生成多层递归目录dirnmae1下的dirname2
3. os.rmdir('dirname')
删除空白单级目录dirname,若dirname不为空则无法删除,并报错
4. os.removedirs('dirname')
若目录为空,则删除,并递归到上一级目录,若也为空,则删除,依次类推
5. os.listdir('dirname')
列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表的形式返回
6. os.remove()
删除一个文件
7. os.rename('oldname', 'newname')
重命名一个文件/目录
8. os.stat('path/filename')
获取文件/目录信息
9. os.getcwd()
获取当前工作目录,即当前python脚本工作的目录路径
10. os.chdir('dirname')
改变当前脚本的工作目录,相当于shell下的cd
11. os.path.abspath(path)
返回path规范化的绝对路径
12. os.path.dirname(path)
返回文件所在目录
13. os.path.basename(path)
返回path最后的文件名,如果path以 / 或 \ 结尾,那么就会返回空值
14. os.path.exists(path)
判断路径存不存在,若存在则返回True,不存在,则返回False
15. os.path.isabs(path)
判断是否为绝对路径,返回True或False
16. os.path.isfile(path)
判断是否为文件,是即返回True,不是则返回False
17. os.path.isdir(path)
判断是否为文件夹,是即返回True,不是则返回False
18. os.path.join(path1, path2, ... )
依次将路径拼贴起来
19. os.path.getatime(path)
返回path所指向的文件或目录最后访问的时间
20. os.path.getmtime(path)
返回path所指向的文件或目录最后修改的时间
20. os.path.getsize(path)
返回path的大小(bytes)
21. os.system('command') 22. os.open()
命令指令 运行shell命令,获取执行结果
序列化模块(json)
序列就是字符串
序列化就是把其他数据类型转为字符串的过程,如 list、dict、tuple等转为str的过程
反序列化就是把字符串转为其他数据类型的过程,如 str 转化为 list、dict、tuple等
1.dumps、loads
json.dumps(d) :序列化
json.loads(d) :反序列化 #里面的字符串必须是双引号
2.dump、loads
用于写入文件中使用,但只能做用单元素
json.dump()
1.先序列化
2.写入文件
json.load
例:
1 import json 2 3 dct = {'ccc':'111'} 4 # 写入 5 with open(r'a.txt', 'w', encoding='utf8') as f: 6 json.dump(dct, f) # 将dct写入a.txt中 7 8 # 读取 9 with open(r'a.txt', 'r', encoding='utf8') as f: 10 res = json.load(f) 11 print(res, type(res)) # {'ccc': '111'} <class 'dict'>
3.补充
用json序列化时,元素会被自动编码,可以改变编码格式
例:
1 import json 2 3 dct = {'ccc菜': '111'} 4 print(json.dumps(dct)) # {"ccc\u83dc": "111"} 5 print(json.dumps(dct, ensure_ascii=False)) # {"ccc菜": "111"}
pickle和json的区别
json不是所有的数据类型都可以序列化,但是可以跨语言
pickle能够序列化所有的数据类型,比如视频,音频,照片等
但是pickle序列化之后的数据只能在python中使用,不能跨语言
pickle也有四个方法:dumps、loads、dump、load,用法和json一模一样,
区别是:pickle序列化出来的结果都是二进制类型,字节类型
打开文件读写,例:
1 import pickle 2 3 dct = {'ccc菜': '111'} 4 with open(r'a.txt', 'bw' ) as f: 5 pickle.dump(dct, f) 6 7 with open(r'a.txt', 'br') as f: 8 res = pickle.load(f) 9 print(res) # {'ccc菜': '111'} 10 11 res = pickle.dumps(dct) 12 print(res) # b'\x80\x04\x95\x13\x00\x00\x00\x00\x00\x00\x00}\x94\x8c\x06ccc\xe8\x8f\x9c\x94\x8c\x03111\x94s.' 13 14 res = pickle.loads(res) 15 print(res) # {'ccc菜': '111'}