我有几个文件夹,每个文件夹包含几个子文件夹,每个文件夹包含5-6个.txt文件,每个文件都有水果列表(苹果,梨,葡萄等)。但是,一些随机的.txt文件却包含“鸡”,并且必须删除。
我正在尝试编写一个程序,该程序将浏览每个文件夹和子文件夹,删除包含字符串“ chicken”的文件,但是由于某种原因,它似乎无法正常工作。
以下是我到目前为止的代码:
import os
DIR = r'C:\Users\Steve\AppData\Local\Programs\Python\Python37-32\fruits'
for parent, dirnames, filenames in os.walk(DIR):
for fn in filenames:
found = False
with open(os.path.join(DIR,filename)) as f:
for line in f:
if 'chicken' in line:
found = True
break
if found:
os.remove(os.path.join(DIR, fn))
我遇到诸如
之类的错误 File <stdin>, line 4, in <module>
FileNotFoundError: [errno 2] No such file or directory:
我不确定为什么。
任何有关如何使代码平稳运行的建议都将受到赞赏!
答案 0 :(得分:0)
您遇到缩进问题。在for循环中使用以下代码
for line in f:
if 'chicken' in line:
found = True
break
答案 1 :(得分:0)
我不确定在直接删除文件后为什么先中断然后删除。您在代码中的位置正确,但是结构和缩进错误。我希望这有助于解决您的问题。
import os
root = r'C:\Users\Steve\AppData\Local\Programs\Python\Python37-32\fruits'
for path, subdirs, files in os.walk(root):
for name in files:
# get file path
file_path = os.path.join(path, name)
# read content of file
with open(file_path) as f:
content = f.readlines()
# delete if it include key word
for line in content:
if "chicken" in line:
os.remove(file_path)
break