python - f.readline() 不捕获文件的最后一行

标签 python python-3.x text

我正在使用 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/

相关文章:

json - 在 Python3 中加载一个空字符串作为 JSON

python - 比较同一字典中的键和值

python - 在 python 中从 XML 中提取项目列表

python - Python 读取行 (os x) 中的 `set editing-mode vi`

python - Matplotlib 在方法和日期时间之间填充

python - 如何将 yapf 应用于目录下的每个 python 文件?

html - 如何在Python 3中隔离HTML页面的一部分

javascript - 将新的 div 元素包裹在特定文本周围

php - 在 MySQL 中导入文本文件

python - 将超链接嵌入到数据集中带有 HTML 的列中