Я написал код, который открывает несколько файлов в каталоге и выводит только первый экземпляр совпадения требуемого текста из каждого файла в качестве вывода.
Теперь я хочу, чтобы этот вывод был в файле. Если просто поместить print >> file.txt,...
, .write
или csv.write
внутрь цикла, это не поможет.
Мой код:
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 !!!"
print >> output, "some text"
,output
должен быть открытым файлом (или другим файлоподобным объектом), а не именем файла. - person DzinX   schedule 26.09.2012NameError
, еслиmoldesc[1] in line
истинно, аmoldesc[0] in line
нет... (По крайней мере, в первый раз - в противном случае это может быть Text1 установлен из строки, которая совершенно не имеет ничего общего со строкой, в которой Text2 устанавливается for... [например, слегка неправильные результаты)) Кроме того, кажется, не имеет значения, какое совпадение вы получите, вы всегда берете последнее слово из строки? С таким же успехом можно простоif any(m in line for m in ['Match1', 'Match2']): ...
- person Jon Clements♦   schedule 26.09.2012