新建目录
os.mkdir(path, mode=0o777, *, dir_fd=None)
仅新建单个目录, 不支持递归, 路径已存在时报错, 相当于 Linux 命令中的 mkdir
os.makedirs(name, mode=0o777, exist_ok=False)
可递归新建目录, 相当于 Linux 命令中的 mkdir -p
-
mode: 新建目录的权限, 使用八进制形式
-
exist_ok: 设为 True 时路径存在也不报错
重命名
os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
对文件或目录重命名, 不支持递归新建路径(如果 ~/Test 不存在, 不能创建 ~/Test/Sub)
如果目标路径存在:
对于 Windows, 直接报错 FileExistsError
对于 Unix
- src dst 都是目录且 dst 是空目录, dst 被替换
- src dst 都是文件, dst 被替换
- 其他情况报错
os.renames(old, new)
除了可以递归新建路径, 功能与 os.rename
一致
复制文件
shutil.copy(src, dst, *, follow_symlinks=True)
可以将文件复制为另一个文件, 也可以将文件复制到目录下
-
src: 源文件
-
dst: 目标文件或目录
-
follow_symlinks: 是否复制软链接指向的内容
shutil.copy2(src, dst, *, follow_symlinks=True)
功能与 shutil.copy
一样, 但是会尽可能保留文件元信息
复制目录
shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False, dirs_exist_ok=False)
递归复制目录, 返回目标目录
-
src: 源目录
-
dst: 目标目录
-
symlinks
- True: 仅复制软链接
- False: 复制链接指向的内容, 如果链接内容不存在将报错(ignore_dangling_symlinks=True 时可忽略该错误)
-
ignore: 函数对象, 用于过滤
-
copy_function: 一般为 copy 或 copy2, 该函数用于实际复制
-
dirs_exist_ok: 目标路径存在时是否抛出异常(Python3.8 新增参数)
移动文件或目录
shutil.move(src, dst, copy_function=copy2)
如果 dst 是已经存在的目录, 则直接将源内容移至该目录, 对于其他情况优先使用重命名, 否则使用复制并删除源内容
- copy_function: 选择 copy 或 copy2
删除文件
os.remove(path, *, dir_fd=None)
仅用于删除文件, 删除目录时报错 IsADirectoryError
删除目录
os.rmdir(path, *, dir_fd=None)
仅用于删除空目录, 目录不存在或者非空时报错
os.removedirs(name)
与 os.makedirs
相反, 递归删除空目录, 如果指定 “Test/Test1/Test2/Test3”, 依次尝试删除目录 Test3, Test2, Test1, Test, 碰到非空目录时停止, 如果 Test1 非空, 则仅删除 Test3 和 Test2
shutil.rmtree(path, ignore_errors=False, οnerrοr=None)
递归删除目录, 可以删除非空目录