【发布时间】:2019-08-16 03:46:22
【问题描述】:
我正在使用 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']
['']
【问题讨论】:
-
.readline()是文件的方法,而不是str。此外,您应该显示文件的内容。最后一行很可能只是一个空行(例如\n\n)。 -
这段代码只读取文件的first行。
-
@MarcoBonelli 我已经包含了一个输入示例,最后一行不是空的。
-
@jasonharper 我已经编辑了代码 sn-p 以反映我用来读取整个文件的循环。
标签: python python-3.x text