Python:从数据库中提取行
我有一个包含ID的文件,我正试图从另一个文件(数据库)中提取具有相同ID的行。我正在尝试此代码,但它只给出一行代码: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]
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()而不是仅仅打印行?当你在行中阅读时,你也会在它的末尾得到换行符<代码>打印添加了自己的代码,因此如果您不剥离原始代码,则每行后面都会打印一个空行。此外,即使我减少了行数,代码也要花费很长时间才能完成