我尝试使用python在包含多个.txt文件的文件夹中搜索字符串。
我的目标是找到包含字符串的文件,然后在另一个文件夹中移动/或重写它们。
我试过的是:
import os
for filename in os.listdir('./*.txt'):
if os.path.isfile(filename):
with open(filename) as f:
for line in f:
if 'string/term to be searched' in line:
f.write
break
这可能是出了问题,但当然无法解决这个问题。
答案 0 :(得分:0)
os.listdir参数必须是路径,而不是模式。您可以使用glob来完成该任务:
import os
import glob
for filename in glob.glob('./*.txt'):
if os.path.isfile(filename):
with open(filename) as f:
for line in f:
if 'string/term to be searched' in line:
# You cannot write with f, because is open in read mode
# and must supply an argument.
# Your actions
break
答案 1 :(得分:0)
正如安东尼奥所说,你不能用f写,因为它在读模式下是开放的。 避免此问题的可能解决方案如下:
import os
import shutil
source_dir = "your/source/path"
destination_dir = "your/destination/path"
for top, dirs, files in os.walk(source_dir):
for filename in files:
file_path = os.path.join(top, filename)
check = False
with open(file_path, 'r') as f:
if 'string/term to be searched' in f.read():
check = True
if check is True:
shutil.move(file_path, os.path.join(destination_dir , filename))
请记住,如果你的source_dir或destination_dir包含一些"特殊字符"你必须把双背斜杠。
例如,这个:
source_dir = "C:\documents\test"
应该是
source_dir = "C:\documents\\test"