我有一个包含ID的文件,我试图从另一个文件(数据库)中提取具有相同ID的行。我试过这段代码,但它只给我一行:
a = open ('file.txt', 'a+') # database file
b = open ('file2.txt', 'a+') # list of interest
for line1 in b:
IPR= line1.split()[1]
for line2 in a:
IPR2= line2.split()[0]
if IPR == IPR2:
print line2
似乎它没有循环,或者我犯了另一个错误,任何人都可以帮助我吗?
答案 0 :(得分:0)
试试这个:
b = open ('file2.txt', 'r') # list of interest
for line1 in b:
IPR= line1.split()[1]
a= open ('file.txt', 'r') # database file
for line2 in a:
IPR2= line2.split()[0]
if IPR == IPR2:
print line2
答案 1 :(得分:0)
我的建议是更改为r模块,因为这将只读取文件中的所有数据。与line1和line2相反,只使用line,因为它默认为所有行执行操作
a= open ('file.txt', 'r') # database file
b= open ('file2.txt', 'r') # list of interest
for line in b:
IPR= line.split()[1]
for line in a:
IPR2= line.split()[0]
if IPR == IPR2:
print line
答案 2 :(得分:0)
您没有循环,因为在b
的第一次迭代期间(在数据库文件耗尽之后),您只读取了一次数据库文件。您是否考虑过首先将数据库作为行列表读入内存:
b = open ('file2.txt', 'r') # list of interest
db = open ('file.txt', 'r').readlines() # database file
for line1 in b:
IPR= line1.split()[1]
for line2 in db:
IPR2= line2.split()[0]
if IPR == IPR2:
print line2.rstrip()