@zhangyu756897669
2017-09-15T15:27:31.000000Z
字数 3388
阅读 719
- 在文件夹的每个子文件夹中复制所有PDF文件(只有PDF文件)
- 删除名为spam001.txt,spam002.txt,spam003.txt等数百个文件的文件夹中每个文件的文件名中的前导零。
- 将几个文件夹的内容压缩成一个ZIP文件(可以是简单的备份系统)
- 所有这些无聊的东西在Python中可自动化。通过编程您的计算机来完成这些任务,您可以将其转换为一个快速工作的文件管理员,从不犯错误。
- 当您开始使用文件时,您可能会发现有助于快速查看文件的扩展名(.txt,.pdf,.jpg等)。使用OS X和Linux,您的文件浏览器很可能会自动显示扩展名。
- 使用Windows,默认情况下可能会隐藏文件扩展名。要显示扩展名,请转到“开始”▸“控制面板”▸“外观和个性化”▸“选项”。在视图选项卡的高级设置下,取消选中隐藏已知文件类型的扩展名复选框。
shutil(或shell实用程序)模块具有使您可以在Python程序中复制,移动,重命名和删除文件的功能。要使用shutil函数,首先需要使用import shutil。
import shutil, os
os.chdir('D:\\')
shutil.copy('D:\\test.txt', 'D:\\yy') #❶
'D:\yy\test.txt'
shutil.copy('test.txt', 'D:\\yy\\test2.txt') #❷
'D:\yy\test2.txt'
第一个shutil.copy()调用将文件C:\ spam.txt复制到文件夹C:\ delicious。返回值是新复制的文件的路径。请注意,由于将文件夹指定为目标❶,原始的spam.txt文件名用于新的复制文件的文件名。第二个shutil.copy()调用❷也将文件C:\ eggs.txt复制到文件夹C:\ delicious,但是将复制的文件命名为egg2.txt。
import shutil, os
os.chdir('D:\\')
shutil.copytree('D:\\yy', 'D:\\yyy')
'D:\yyy'
shutil.copytree()调用创建一个名为bacon_backup的新文件夹,其内容与原始文件夹相同。你现在已经安全地备份了你珍贵的原始文件。
调用shutil.move(source,destination)将将路径源中的文件或文件夹移动到路径目标位置,并返回新位置的绝对路径的字符串。
如果目的地指向一个文件夹,则源文件将被移动到目的地并保持当前的文件名。
import shutil
shutil.move('D:\\test.txt', 'D:\\java')
'D:\java\test.txt'
如果在D:\jave中已经有一个test.txt文件,它将被覆盖。因为很容易以这种方式覆盖文件,所以在使用move()时应该小心。
目的地路径也可以指定文件名。在以下示例中,源文件被移动并重命名。
shutil.move('D:\\text.txt', 'D:\\java\\new_bacon.txt')
'D:\java\new_bacon.txt'
该行说:“将D:\ text.txt移动到文件夹D:\java中,当文件在java文件夹时,将text.txt文件重命名为new_bacon.txt。
shutil.move('D:\\text.txt', 'D:\\eggs')
'D:\eggs'
在这里,move()在D:\目录中找不到名为egg的文件夹,所以假定目的地必须指定文件名而不是文件夹。所以text.txt文本文件被重命名为egg(一个没有.txt文件扩展名的文本文件) - 可能不是你想要的!这可能是您的程序中的难点问题,因为move()调用可以愉快地执行与您期望的内容完全不同的操作。这是使用move()时要小心的另一个原因。
- 调用os.unlink(path)将在路径上删除该文件。
- 调用os.rmdir(路径)将删除路径上的文件夹。该文件夹必须是空的任何文件或文件夹。
- 调用shutil.rmtree(path)将删除路径中的文件夹,并且其中包含的所有文件和文件夹也将被删除。
import os
for filename in os.listdir():
if filename.endswith('.rxt'):
os.unlink(filename)
import os
for filename in os.listdir():
if filename.endswith('.rxt'):
#os.unlink(filename)
print(filename)
由于Python内置的shutil.rmtree()函数不可逆地删除文件和文件夹,所以使用起来很危险。删除文件和文件夹的更好方法是使用第三方send2trash模块。您可以通过从终端窗口运行pip install send2trash来安装此模块。
使用send2trash比Python的常规删除功能更安全,因为它会将文件夹和文件发送到计算机的垃圾桶或回收站,而不是永久删除它们。如果您的程序中的错误会使用send2trash删除某些内容,则不会彻底删除,则可以稍后从回收站中将其还原。
import send2trash
baconFile = open('test.txt', 'a') # creates the file
baconFile.write('Bacon is not a vegetable.')
25
baconFile.close()
send2trash.send2trash('test.txt')