Python程序删除具有特定扩展名的文件
时间:2020-01-09 10:44:20 来源:igfitidea点击:
在本教程中,我们将看到如何编写Python程序来删除所有具有特定扩展名的文件。
1.使用os.listdir()
在Python的os模块中,有一个函数listdir()返回一个包含目录中条目名称的列表。我们可以迭代该列表以查找以特定扩展名结尾的文件名,然后删除这些文件。
我们将在程序中使用以下目录结构
Test abc.txt abc1.txt newimage.png Sub1 (D) sub1.txt Sub2 (D) sub2.txt
def delete_files(dir_path): path = os.listdir(dir_path); for entry in path: print(entry) if entry.endswith(".txt"): p = os.path.join(dir_path, entry) print('Deleting', p) os.remove(p) delete_files("F:\theitroad\Python\Test")
输出:
abc.txt Deleting F:\theitroad\Python\Test\abc.txt abc1.txt Deleting F:\theitroad\Python\Test\abc1.txt newimage.png Sub1 Sub2
如我们所见,目录Test中扩展名为.txt的文件已删除。该程序不会递归删除子目录中的文件。如果我们也要删除子目录中具有特定扩展名的文件,则可以使上述Python程序递归调用函数,也可以在glob模块中使用函数。
Python程序以递归方式删除具有特定扩展名的文件
def delete_files(dir_path): path = os.listdir(dir_path); for entry in path: print(entry) p = os.path.join(dir_path, entry) if os.path.isdir(p): print('Directory', p) # recursive call delete_files(p) else: if p.endswith(".txt"): print('Deleting', p) os.remove(p)
输出:
abc.txt Deleting F:\theitroad\Python\Test\abc.txt abc1.txt Deleting F:\theitroad\Python\Test\abc1.txt newimage.png Sub1 Directory F:\theitroad\Python\Test\Sub1 sub1.txt Deleting F:\theitroad\Python\Test\Sub1\sub1.txt Sub2 Directory F:\theitroad\Python\Test\Sub2 sub2.txt Deleting F:\theitroad\Python\Test\Sub2\sub2.txt
2.在Python中使用glob()模块
glob模块找到与指定模式匹配的所有路径名。我们可以使用此模块查找具有特定扩展名的文件并将其删除。在glob模块中,有函数glob()(返回列表)和iglob()(返回迭代器),它们返回匹配的路径名。
在glob或者iglob中,我们可以传递参数recursive = True,如果递归为true,则模式" **"将匹配任何文件以及零个或者多个目录和子目录。默认情况下,递归的值为false。
def delete_files(dir_path, ext): file_itr = glob.glob(dir_path + '/*' + ext, recursive=True) for entry in file_itr: print('Deleting', entry) os.remove(entry) delete_files("F:\theitroad\Python\Test\**", ".txt")
输出:
Deleting F:\theitroad\Python\Test\abc.txt Deleting F:\theitroad\Python\Test\abc1.txt Deleting F:\theitroad\Python\Test\Sub1\sub1.txt Deleting F:\theitroad\Python\Test\Sub2\sub2.txt