Python从多个文件中提取第一个匹配实例

Python从多个文件中提取第一个匹配实例,python,text,for-loop,fileoutputstream,Python,Text,For Loop,Fileoutputstream,我已经编写了一个代码,它在一个目录中打开多个文件,并且只打印每个文件中所需文本匹配的第一个实例作为输出 现在我希望这个输出在一个文件中。只需将print>>file.txt、或写入或csv即可。写入在循环中不会起作用 我的代码是: import re, os, csv, sys path = "D:\\" in_files = os.listdir(path) moldesc = ['Match1', 'Match2'] for f in in_files: file = os.pa

我已经编写了一个代码,它在一个目录中打开多个文件,并且只打印每个文件中所需文本匹配的第一个实例作为输出

现在我希望这个输出在一个文件中。只需将
print>>file.txt、
写入
csv即可。写入
在循环中不会起作用

我的代码是:

import re, os, csv, sys

path = "D:\\"
in_files = os.listdir(path)
moldesc = ['Match1', 'Match2']

for f in in_files:
    file = os.path.join(path, f)
    text = open(file, "r")
    for line in text:
        if moldesc[0] in line:
            Text1 = line.split()[-1]          
        if moldesc[1] in line:
            Text2 = line.split()[-1]
            print f, Text1, Text2               # I WANT THIS OUTPUT IN A FILE
            break
    text.close()

print "We are extraction done !!!"  

您成功地打开了一个文件进行读取,这离打开一个文件进行写入只有一步之遥

out = open(outfile, "w") 
for f in in_files:
    ...
    output_string = "{},{},{}\n".format(f, HOMO, LUMO)
    out.write(output_string)

当您编写
print>>输出时,“某些文本”
output
应该是一个打开的文件(或其他类似文件的对象),而不是一个文件名。如果第
行中的
moldesc[1]为true,而第
行中的
moldesc[0]为true,您将得到一个
namererror
。。。(至少第一次-否则,可能是Text1是从一行设置的,而该行与Text2设置的行完全无关…[例如,微妙的错误结果])。此外,你得到什么匹配似乎并不重要,你总是从这行中取最后一个字?如果有的话,你也可以选择
(m in line代表m in)['Match1','Match2']:…
@DzinX Yes agreed print>>输出,应具有名为“output”的打开文件在w模式下,但仍然是Current脚本,它只从目录中的第一个文件中写入匹配的输出,而我希望从目录中的所有文件中获得第一个匹配实例…@Jon Clements Ya我正在匹配不同的单词,并从行中获取最后一个单词,并尝试打印这些单词…所以程序工作正常。但我希望是在一个文件中输出的。这是我无法做到的。还记得我使用了多个文件作为输入。所以-Text1总是在Text2之前,第36行(Text1)和第3900行(Text2)的最后一个字的输出[只是组成它们]是预期的输出?output_string=“{},{},{}\n”。format(f,HOMO,LUMO)AttributeError:'str'对象没有属性'format'wow,你在使用python 2.5吗?你可以使用output_string=“%s,%s”%(f,text1,text2)应该是,确保你关闭文件,如果你仍然有问题,发布带有问题的代码。这太棒了,对我来说就像魔术一样简单地关闭文件就行了…非常感谢