移动/重写与具有多个txt文件的文件夹中的字符串匹配的txt文件

时间:2017-03-02 11:02:54

标签: python search text move

我尝试使用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

这可能是出了问题,但当然无法解决这个问题。

2 个答案:

答案 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"