Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从数据库中提取行_Python - Fatal编程技术网

Python:从数据库中提取行

Python:从数据库中提取行,python,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]

我有一个包含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
好像没有循环,或者我又犯了一个错误,有人能帮我吗?

试试这个:

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

我的建议是更改为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

之所以不循环,是因为在
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()

尝试用“r”模式(默认模式)打开文件。你能显示你的文件内容吗?这很有效,谢谢。但是我想知道为什么你使用rstrip()而不是仅仅打印行?当你在行中阅读时,你也会在它的末尾得到换行符<代码>打印添加了自己的代码,因此如果您不剥离原始代码,则每行后面都会打印一个空行。此外,即使我减少了行数,代码也要花费很长时间才能完成