1,shutil 模块介绍
shutil(或称为 shell 工具) 模块中包含一些函数, 让你在 Python 程序中复制, 移动, 改名和删除文件. 要使用 shutil 的函数, 首先需要 import shutil.
2, 方法
2.1, 复制文件和文件夹
2.1.1,shutil.copy(source, destination)
将路径 source 处的文件复制到路径 destination 处的文件夹 (source 和 destination 都是字符串). 如果 destination 是一个文件名, 它将作为被复制文件的新名字. 该函数返回一个字符串, 表示被复制文件的路径.
- import shutil
- shutil.copy("F:\\share\\python\\style.CSS", "F:\\share")
输出结果:
- 'F:\\share\\style.CSS'
- import shutil
- shutil.copy("data.sql", "F:\\share")
输出结果:
- 'F:\\share\\data.sql'
- 2.1.2,shutil.copytree(source, destination)
将路径 source 处的文件夹, 包括它的所有文件和子文件夹, 复制到路径 destination 处的文件夹. source 和 destination 参数都是字符串. 该函数返回一个字符串, 是新复制的文件夹的路径.
- import shutil
- shutil.copytree("tornado", "F:\\share\\test")
输出结果:
'F:\\share\\test'
2.2, 文件和文件夹的移动与改名
2.2.1,shutil.move(source, destination)
将路径 source 处的文件夹移动到路径 destination, 并返回新位置的绝对路径的字符串.
- import shutil
- shutil.move("F:\\share\\python\\func.txt", "F:\\share\\test")
输出结果:
'F:\\share\\test\\func.txt'
2.3, 永久删除文件和文件夹
利用 os 模块中的函数, 可以删除一个文件或一个空文件夹. 但利用 shutil 模块, 可以删除一个文件夹及其所有的内容.
2.3.1,os.unlink(path)
删除 path 处的文件.
- import os
- for filename in os.listdir("F:\\share\\python"):
- if filename.endswith(".txt"):
- print(filename)
- os.unlink(filename)
输出结果:
- new.txt
- 2.3.2,os.rmdir(path)
删除 path 处的文件夹. 该文件夹必须为空, 其中没有任何文件和文件夹.
- import os
- os.rmdir("F:\\share\\test")
输出结果:
- ---------------------------------------------------------------------------
- OSError Traceback (most recent call last)
- <ipython-input-16-8c8f7b0cf6ca> in ()
- 1 import os
- ----> 2 os.rmdir("F:\\share\\test")
OSError: [WinError 145] 目录不是空的.: 'F:\\share\\test'
- import os
- path = "F:\\share\\test\\hello"
- print(os.path.exists(path))
- os.rmdir(path)
- print(os.path.exists(path))
输出结果:
- True False
- 2.3.3,shutil.rmtree(path)
删除 path 处的文件夹, 它包含的所有文件和文件夹都会被删除.
- import shutil
- path = "F:\\share\\test\\imges"
- print(os.path.exists(path))
- shutil.rmtree(path)
- print(os.path.exists(path))
输出结果:
True False
2.4, 用 send2trash 模块安全地删除
因为 Python 内建的 shutil.rmtree() 函数不可恢复地删除文件和文件夹, 所以 用起来可能有危险. 删除文件和文件夹的更好方法, 是使用第三方的 send2trash 模块. 你可以在终端窗口中运行 pip install send2trash, 安装该模块 (参见附录 A, 其中更详细地解释了如何安装第三方模块).
利用 send2trash, 比 Python 常规的删除函数要安全得多, 因为它会将文件夹和文件发送到计算机的垃圾箱或回收站, 而不是永久删除它们. 如果因程序缺陷而用 send2trash 删除了某些你不想删除的东西, 稍后可以从垃圾箱恢复.
- import send2trash
- path = "F:\\share\\test\\templates"
- print(os.path.exists(path))
- send2trash.send2trash(path)
- print(os.path.exists(path))
输出结果:
True False
查看垃圾箱:
来源: http://www.bubuko.com/infodetail-2788607.html