Python系列 | shutil模块常用命令

shutile 模块提供了一系列对文件和文件集合的高阶操作,特别是提供了一些支持文件拷贝和删除的函数。

如有其他命令需要,可参见 Python 官网的相关文档:shutil 高阶文件操作 或调用 help(shutile) 命令获取帮助文档。

关于 os 模块的相关命令,可参考我的另一篇博客:Python系列 | os模块常用命令

示例:假设 C 盘存在两个文件夹 p_filenew_pfile

# input code
import os
os.chdir(r"C:\p_file")
print(os.getcwd())
print(os.listdir())
# output result
C:\p_file
["p_file's excel.xlsx", "p_file's text.txt", 'sub_file']  # p_file文件夹中存在一个txt文件、一个excel文件和一个名为sub_file的文件夹(sub_file文件夹内存在有文件和子文件夹)

1. shutil.copy

  • shutile.copy(src, dst)
  • 将文件 src 拷贝到文件或目录 dst
# input code
import shutil
shutil.copy(r".\p_file's text.txt",r"..\new_pfile")
# output result
"..\\new_pfile\\p_file's text.txt"  # 已成功拷贝txt文件至new_pfile文件夹下

2. shutile.copy2

  • shutile.copy2(src, dst)
  • 类似于 copy() ,区别在于 copy2() 还会尝试保留文件的元数据
# input code
shutil.copy2(r".\p_file's excel.xlsx",r"..\new_pfile")
# output result
"..\\new_pfile\\p_file's excel.xlsx" # 已成功拷贝excel文件至new_pfile文件夹下

3. shutile.copytree

  • shutil.copytree(src, dst)
  • 递归地拷贝以 src 为根路径的整个目录树,返回目标目录 dst。 其中,名为 dst 的目标目录不必已存在,可被自动创建
# input code
print("sub_file中含有文件:{}".format(os.listdir(r'.\sub_file')))
shutil.copytree(r'.\sub_file',r'..\tree_file')
print("新创建的树目录tree_file中含有文件:{}".format(os.listdir(r'..\tree_file')))
# output result
sub_file中含有文件:['subsub_file', "sub_file's text.txt"]
新创建的树目录tree_file中含有文件:['subsub_file', "sub_file's text.txt"]

4. shutil.rmtree

  • shutil.rmtree(path)
  • 删除一个完整的 path 目录树
# input code
shutil.rmtree(r'..\tree_file') # 即使tree_file内含文件也会被删除,这点不同于os.rmdir或os.removedirs,os模块的两个删除函数只能删除空文件、空文件夹
print(os.listdir('..'))
# output result
['new_pfile','p_file']  # tree_file已被删除

5. shutil.move

  • shutil.move(src, dst)
  • 递归地将一个文件或目录 (src) 移至另一位置 (dst) 并返回目标位置(类似 windows 剪切操作)
# input code
shutil.move(r'..\new_pfile','.') # 将C盘的new_pfile文件夹移动至C盘的p_file文件夹中
print(os.listdir())
# output result
'.\\new_pfile'
['new_pfile', "p_file's excel.xlsx", "p_file's text.txt", 'sub_file'] # 以完成移动
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值