我有一个文本文件,我想从中找到特定的行并将它们写入新文件。文字看起来像这样:
1552311_a_at NA 6.548202118 6.795958567 6.525295817 6.467153775
1552312_a_at NA 7.237622005 7.501887409 7.438287339 7.249551462
1552334_at NA 5.36199913 5.554097857 5.296649894 5.64695338
我之前没有遇到太多问题,但是出于某种原因,在这种情况下它对我不起作用。我有一个值列表,我正在寻找文本文件中提取。
import fileinput
x = open('file', 'r')
y = open('file_write', 'w')
z = [...,...,...] #list of values to search for in file given by user
def file_transform(filein,fileout,list):
for i in list:
for line in filein:
if list[i] in line:
fileout.write(line)
file_transform(x,y,z)
file.close()
file_write.close()
脚本运行,但我最终得到一个空的新文本文件。我无法理解我哪里出错了。
答案 0 :(得分:3)
你不能在没有“倒带”的情况下多次循环同一个文件,也就是你在列表中滥用 循环:
def file_transform(filein,fileout,z):
for i in z:
for line in filein:
if i in line:
fileout.write(line)
filein.seek(0)
或更好:
def file_transform(filein,fileout,z):
for line in filein:
for i in z:
if i in line:
fileout.write(line)
执行for i in z
时,我实际上包含列表而非索引的元素。
有关详细信息,请参阅this。
答案 1 :(得分:0)
list
不是任何变量的好名称,因为list
是python中的对象类型。
with open('file', 'r') as f:
x = f.readlines() # this auto closes the file after reading, which is better practice
y = open('file_write', 'w')
def file_transform(filein, fileout, z):
for line in filein:
for i in z:
if i in line:
fileout.write(line)