shutil模块
shutil(或称为shell工具)模块中包含一些函数,让你在python程序中复制、移动、改名和删除文件。
要使用shutil的函数,首先需要import shutil
1.复制文件和文件夹
shutil模块提供了一些函数,用于复制文件和整个文件夹。
调用shutil.copy(source,destination), 将路径source处的文件复制到路径destination处的文件夹(source和destination都是字符串)
如果destination是一个文件名,它将作为被复制文件的新名字。该函数返回一个字符串,表示被复制文件的路径。
shutil.copy()将复制一个文件,shutil.copytree()将复制整个文件夹,以及它包含的文件夹和文件。
shutil.copytree(source, destination), 将路径source处的文件夹,包括它的所有文件和子文件夹,复制到路径destination处的文件夹。
source和destination参数都是字符串。该函数返回一个字符串,是新复制的文件夹的路径
2.文件和文件夹的移动与改名
调用shutil.move(source, destination), 将路径source处的文件夹移动到路径destination,并返回新位置的绝对路径的字符串。
如果destination指向一个文件夹,source文件将移动到destination中,并保持原来的文件名。
3.永久删除文件和文件夹
利用os模块中的函数,可以删除一个文件或一个空文件夹。但利用shutil模块,可以删除一个文件夹及其所有的内容。
1. 利用os.unlink(path) 将删除path处的文件。
2. 调用os.rmdir(path) 将删除path处的文件夹。该文件夹必须为空,其中没有任何文件和文件夹
3. 调用shutil.rmtree(path) 将删除path处的文件夹,它包含的所有文件和文件夹都会被删除。
send2trash模块
因为Python内建的shutil.rmtree() 函数不可恢复地删除文件和文件夹,可以利用send2trash模块安全地删除。
利用send2trash,比Python常规的删除函数要安全得多,因为它会将文件夹和文件发送到计算机的垃圾箱或回收站,而不是永久删除他们。
send2trash.send2trash()函数来删除文件和文件夹。虽然它将文件发送到垃圾箱,让你稍后能够恢复她们,但是这不像永久删除文件,不会释放磁盘空间。
如果你希望程序释放磁盘空间,就要利用os和shutil来删除文件和文件夹。注意,send2trash() 函数只能将文件发送到垃圾箱,不能从中恢复文件。遍历目录树 os.walk()函数
import os
for folder_name, sub_folders, file_names in os.walk('c:\\test'):
print 'The current folder is', folder_name
for sub_folder in sub_folder:
print 'SUBFOLDER OF %s : %s' % (folder_name, sub_folder)
for file_name in file_names:
print 'FILE INSIDE %s : %s ' % (folder_name, file_name)
os.walk()函数被传入一个字符串值,即一个文件夹的路径。os.walk()函数在循环的每次迭代中,返回3个值:
1. 当前文件夹名称的字符串
2. 当前文件夹中子文件夹的字符串的列表
3. 当前文件夹中文件的字符串的列表