Python:从数据库中提取行

时间:2015-04-15 18:06:25

标签: python

我有一个包含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

似乎它没有循环,或者我犯了另一个错误,任何人都可以帮助我吗?

3 个答案:

答案 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()