我正在使用 readline() 读取一个非常大的文本文件。该文件的长度有几百万行。但是,无论我做什么都不会捕获文件的最后一行。
我正在阅读的文件如下所示:
$ tail file.txt
22 rs1193135566 0 50807787 C G 0 0 0 0 NA 0 0 0 NA NA 0
22 rs1349597430 0 50807793 T G 0 0 0 0 0 0 0 NA NA NA NA
22 rs1230501076 0 50807799 T G 0 0 NA NA 0 0 0 NA 0 NA 0
22 22_50807803 0 50807803 C G 0 0 0 0 0 0 0 0 0 NA 0
22 rs1488400844 0 50807810 G T 0 0 0 NA 0 0 0 0 0 NA 0
22 rs1279244475 0 50807811 G T 0 0 0 NA 0 0 0 0 0 NA 0
22 rs1346432135 0 50807812 G A 0 NA 0 0 0 0 0 0 0 NA 0
22 rs1340490361 0 50807813 C G 0 0 0 NA 0 0 0 0 0 NA 0
22 22_50807816 0 50807816 G T 0 0 0 NA 0 0 0 0 0 NA 0
22 rs1412997563 0 50807818 G C 0 0 0 NA 0 0 0 0 0 NA 0
我的代码如下所示:
with open('/path/file.txt', 'r') as f:
for l in f:
line = l.rstrip('\n').split("\t")
print(line)
文件的最后一行为空[]
。
输出如下所示:
['22', 'rs1250150067', '0', '50807769', 'G', 'A', 'NA', '0', '0', '0', '0', '0', '0', '0', '0', 'NA', '0']
['22', 'rs1193135566', '0', '50807787', 'C', 'G', '0', '0', '0', '0', 'NA', '0', '0', '0', 'NA', 'NA', '0']
['22', 'rs1230501076', '0', '50807799', 'T', 'G', '0', '0', 'NA', 'NA', '0', '0', '0', 'NA', '0', 'NA', '0']
['22', 'rs1488400844', '0', '50807810', 'G', 'T', '0', '0', '0', 'NA', '0', '0', '0', '0', '0', 'NA', '0']
['22', 'rs1346432135', '0', '50807812', 'G', 'A', '0', 'NA', '0', '0', '0', '0', '0', '0', '0', 'NA', '0']
['22', '22_50807816', '0', '50807816', 'G', 'T', '0', '0', '0', 'NA', '0', '0', '0', '0', '0', 'NA', '0']
['']
最佳答案
您只读取一行,请尝试使用 f.readlines() 代替,它将读取所有行。如果您想逐行使用,请使用下标。
lines = f.readlines()
print(lines[0]) # to display 1st line
print(lines[1]) # to display 2nd line
等等。您还可以在阅读后循环打印行,例如
lines = f.readlines()
for line in lines:
print(line)
编辑1: 它出现在您提供的输出中,就像您的循环没有读取所有行一样,因为输出中只能看到从末尾算起的第二、第四、第六行。
还可以尝试使用 strip() 而不是 rstrip('\n'),因为这会去除字符串两侧的所有空白。
关于python - f.readline() 不捕获文件的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57518681/