1. shutil 模块
1) 复制文件和文件夹
shutil.copy(source, destination),将路径source下的文件复制到路径destination处的文件夹(source 和 destination 都是字符串)。如果 destination 是一个文件名,它将作为被复制文件的新名字。该函数返回一个字符串,表示被复制文件的路径。示例:
>> import shutil, os
>>> os.chdir('C:\\')
>>> shutil.copy('C:\\spam.txt', 'C:\\delicious')
'C:\\delicious\\spam.txt'
>>> shutil.copy('eggs.txt', 'C:\\delicious\\eggs2.txt')
'C:\\delicious\\eggs2.txt'
shutil.copytree(source, destination),将路径source 处的文件夹,包括它的所有文件和子文件夹,复制到路径 destination 处的文件夹。示例:
>>> import shutil, os
>>> os.chdir('C:\\')
>>> shutil.copytree('C:\\bacon', 'C:\\bacon_backup')
'C:\\bacon_backup'
2) 文件和文件夹的移动与改名
shutil.move(source, destination),将路径 source 处的文件夹移动到路径destination,并返回新位置的绝对路径的字符串。示例:
>>> import shutil
>>> shutil.move('C:\\bacon.txt', 'C:\\eggs')
'C:\\eggs\\bacon.txt'
目的地的文件夹必须已经存在,否则 Python 会抛出异常。
3) 永久删除文件和文件夹
利用 os 模块中的函数,可以删除一个文件或一个空文件夹。但利用 shutil 模块,可以删除一个文件夹及其所有的内容。
• 用 os.unlink(path)将删除 path 处的文件。
• 调用 os.rmdir(path)将删除 path 处的文件夹。该文件夹必须为空,其中没有任
何文件和文件夹。
• 调用 shutil.rmtree(path)将删除 path 处的文件夹,它包含的所有文件和文件夹都
会被删除。
4) 用 send2trash 模块安全地删除
使用第三方的send2trash模块,可以将删除的文件或者目录发送到计算机的回收站,而不是永久删除他们。但是,send2trash()函数只能将文件送到垃圾箱,不能从中恢复文件。示例:
>>> import send2trash
>>> send2trash.send2trash('G:\\test.py')
>>> print(send2trash.send2trash('G:\\test.py'))
None
2. 遍历目录树
os.walk()在循环的每次迭代中,返回 3 个值:
1.当前文件夹名称的字符串。
2.当前文件夹中子文件夹的字符串的列表。
3.当前文件夹中文件的字符串的列表。
所谓当前文件夹,是指 for 循环当前迭代的文件夹。程序的当前工作目录,不会因为 os.walk()而改变。示例;
import os for folderName, subfolders, filenames in os.walk('G:'): # 当前目录名称 foldername print('当前目录是: ' + folderName) #当前目录中子目录字符串列表 subfolders for subfolder in subfolders: print('当前目录 ' + folderName + ' 包含字子目录: ' + subfolder) #当前目录中文件的字符串列表 for filename in filenames: print('当前目录 ' + folderName + ' 包含文件: '+ filename) print('')
3. 用 zipfile 模块压缩文件
1) 读取 ZIP 文件
要读取zip的内容,可以使用zipfile模块。使用zipfile.ZipFile()方法可以得到一个ZipFile对象。
ZipFile 对象有一个 namelist()方法,返回 ZIP 文件中包含的所有文件和文件夹的字符串的列表。
这些字符串可以传递给 ZipFile 对象的 getinfo()方法,返回一个关于特定文件的 ZipInfo 对象。ZipInfo 对象有自己的属性,诸如表示字节数的 file_size和 compress_size,它们分别表示原来文件大小和压缩后文件大小。
ZipFile 对象表示整个归档文件,而 ZipInfo 对象则保存该归档文件中每个文件的有用信息。示例:
>>> import zipfile, os
>>>exampleZip = zipfile.ZipFile('G:\\example.zip')
>>> exampleZip.namelist()
['spam.txt', 'cats/', 'cats/catnames.txt', 'cats/zophie.jpg']
>>> spamInfo = exampleZip.getinfo('spam.txt')
>>> spamInfo.file_size
13908
>>> spamInfo.compress_size
3828
2) 从 ZIP 文件中解压缩
ZipFile 对象的 extractall(path)方法从 ZIP 文件中解压缩所有文件和文件夹到path路径中。如果path省略,那么就会解压到当前目录中;如果path不存在会被创建。
>>> import zipfile
>>> exampleZip = zipfile.ZipFile('F:\\example.zip')
>>> exampleZip.extractall()
>>> exampleZip.close()
ZipFile 对象的 extract()方法从 ZIP 文件中解压缩单个文件。示例:
>>> exampleZip.extract('spam.txt')
'C:\\spam.txt'
>>> exampleZip.extract('spam.txt','C:\\some\\new\\folders')
'C:\\some\\new\\folders\\spam.txt'
>>> exampleZip.close()
3) 创建和添加到 ZIP 文件
要创建zip文件,就必须以“写模式”打开ZipFile对象。向 ZipFile 对象的 write()方法传入一个路径,Python 就会压缩该路径所指的文件,将它加到 ZIP 文件中。write()方法的第一个参数是一个字符串,代表要添加的文件名。第二个参数是“压缩类型”参数,它告诉计算机使用怎样的算法来压缩文件。可以总是将这个值设置为 zipfile.ZIP_DEFLATED(这指定了 deflate 压缩算法,它对各种类型的数据都很有效)。示例:
>>> import zipfile
>>> newZip = zipfile.ZipFile('new.zip', 'w')
>>> newZip.write('spam.txt',compress_type=zipfile.ZIP_DEFLATED)
>>> newZip.close()