python之shutil模块
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 <module>() 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
查看垃圾箱: