文件操作

目录操作

创建目录

import os

mkdir(path, mode=511, *, dir_fd=None)

# os.mkdir 不能递归的创建目录
os.mkdir('/tmp/test2/test3')

# os.makedirs 可以递归的创建目录 (类似linux mkdir -p)
os.makedirs('/tmp/test2/test3') # mkdir -p /tmp/test2/test3

# 当目录已经存在时, mkdir 和makedirs都会抛出异常

# 只能删除空目录,不能删除非空目录
os.rmdir('/tmp/test') # rmdir /tmp/test

# 递归的删除空目录
os.removedirs('/tmp/test2/test3/')

# rm -rf /tmp/test 递归删除目录
import shutil
shutil.rmtree('/tmp/test')

# 移动
shutil.move('/tmp/test2', '/tmp/test') # 和mv命令的表现完全一致

# 复制
shutil.copytree('/tmp/a', '/tmp/d', symlinks=True) # cp -rpP

遍历目录

import os

# 目录列表
os.listdir() # ls -a

路径相关的操作

basename
dirname
join
split
abspath
getcwd

os.path.join('/', 'tmp', 'd', 'a')
'/tmp/d/a'

# -> (dirname, basename)
os.path.split('/tmp/d/a/file')

序列化、反序列化

  • 序列化 对象 -> str/bytes
  • 反序列化 str/bytes -> 对象
import pickle
# 序列化
pickle.dumps(1)

pickle.dumps({'a': 1})
b'\x80\x03}q\x00X\x01\x00\x00\x00aq\x01K\x01s.'

#
pickle.dump -> fileobjec
pickle.dumps -> bytes

pickle 的序列化与反序列化,能针对大多数的Python对象包括方法
pickle是Python特有的, 只能在Python之间传递数据使用



import json


# json 仅仅可以序列化 int float, bool, None, str, list dict