我正在尝试用Python编写程序。我希望能够将此程序指向一个目录,让我们说C:\User\Desktop\Folder
。此文件夹包含两种类型的HTML文件,其中一个文件名以...abc.html
结尾,另一个文件以...def.html
结尾。我希望以C:\User\Desktop\Folder
的所有文件夹和子文件夹递归删除,以def.html
结尾。这样做的最佳方式是什么?
我试过这样做:
import os
def deleteFiles(path):
files = os.listdir(path)
for f in files:
if not os.path.isdir(f) and "DEF.html" in f:
os.remove(f)
if os.path.isdir(f):
deleteFiles(path + "/" + f)
deleteFiles("C:\Users\ADMIN\Desktop\TestCode")
然而,在PyCharm中运行它,我收到一个错误:
WindowsError: [Error 2] The system cannot find the file specified: 'testDEF.html'
我在这里做错了什么?
答案 0 :(得分:3)
您需要将os.remove(f)
更改为os.remove(os.path.join(path, f))
顺便说一下,建议使用硬编码路径不是最佳做法。 也就是说你应该这样创造你的道路:
deleteFiles(os.path.join(path, f))
deleteFiles(os.path.join('C:', 'Users', 'ADMIN', 'Desktop', 'TestCode')
这样您的分隔符(' /'或' \')将自动适合您的平台。