模块(os、json、pickle)

发布时间 2023-06-13 21:03:21作者: 菜CAIx

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'}