Python 常用文件和目录操作(新建 重命名 移动 复制 删除)

新建目录

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)

递归删除目录, 可以删除非空目录

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值