【问题标题】:Counting lines in file ambiguity计算文件歧义中的行数
【发布时间】:2015-10-13 13:06:13
【问题描述】:

我有这段代码来计算文件中的每一行:

n = sum(1 for line in open('myfile.txt'))

'n' 是行数。但它没有给出正确的行数。数量相差数百。还尝试了在谷歌中找到的不同方法,但似乎没有任何效果。

知道为什么会这样吗?或者是否存在阻止它给出正确计数的情况?

--更新--

尝试将文件重新写入另一个文件:

i = 0
with open(file2) as outFile:
   with open(file1) as inFile:
       for line in inFile:
           outFile.write(line)
           i += 1

当在查看器上看到的行数方面,输出是 file2 与 file1 完全相同。但是 'i' 的值并没有给出正确的行数。

【问题讨论】:

  • 你文件中的行终止符是否一致?
  • 文件中有多少行,n 有多少行?另外,什么操作系统,以及线路终止符如何?如果您打印lines,您是否看到任何奇怪的东西,可能是编辑器中有一个合并的两个行?
  • @tobias_k 总行数应该是 27,109 但我只得到 26,694。使用 Windows 作为操作系统。它有 CR/LF 和 CR。里面没有什么奇怪的。尝试将其重新写入一个新文件,并且它具有确切的行数。
  • @FrédéricHamidi 是的,它们是一致的
  • @albert,您在之前的评论中说过您的文件具有 CR/LF 和 CR。这在我看来不太一致。

标签: python-2.6


【解决方案1】:

更好的方法是打开文件,然后计算文件的 readlines() 方法中的行数。

f = open('yourfile.txt', 'r')
print len(f.readlines())

【讨论】:

  • 这会给你字符的数量!编辑:现在它可能会给出与 OP 代码完全相同的值(但内存效率较低)
  • 哎呀,你是对的,我已经相应地编辑了我的答案。
  • @tobias_k 我在文本编辑器中检查了文件的长度,和我得到的值一致,所以确实是正确的。
  • 他确实说他没有给出正确的行数,而我的回答解决了这个问题,我不知道我还能说什么。
  • 是的,但是他的代码应该也给出正确的数字。您是否在自己的测试文件上尝试过他的代码?因此,问题不在于代码(或者如果是,您的可能也有同样的问题),而在于文件。
猜你喜欢
  • 1970-01-01
  • 2011-03-29
  • 1970-01-01
  • 2012-09-09
  • 2012-09-24
  • 2019-02-06
  • 1970-01-01
  • 2023-04-05
相关资源
最近更新 更多