使用Python计算代码行数

3

可能是重复问题:
如何在Python中以低成本获取行数?

在我的工作中,我需要打开一个文件并计算其中的行数,我尝试了以下代码:

Last_Line = len(open(File_Name).readlines())

它可以正常工作。但现在我遇到了一个问题,文件中实际的行数是453,但如果我打印Last_Line,它只显示339。如果我尝试使用以下代码:

print linecache.getline(File_Name, 350)

它正在显示第350行的内容。

我尝试以所有模式打开文件。是文件有问题还是我的逻辑有问题呢?请帮帮我。

谢谢。


1
“all modes” 是什么意思?你尝试过通用换行模式吗? - Ignacio Vazquez-Abrams
9
不是重复问题。那个问题问的是“我该如何做?”,而这个问题问的是“我现在做法有什么问题?” - Ignacio Vazquez-Abrams
这是什么类型的文件?你能试试其他的文件吗? - ATOzTOA
1
@Antony Hatchkins,linecache 用于读取文件中的任意一行。 http://docs.python.org/2/library/linecache.html - user19911303
请勿删除系统生成的横幅。这样做可能会导致进一步的管理员操作。在编辑时,请将这些横幅视为禁止编辑的内容。 - casperOne
显示剩余6条评论
1个回答

5

您的换行符混合了。 您的IDE将它们全部视为有效,而Python则不是。 以通用换行符标志"U"打开文件,让Python将它们全部视为有效的换行符。

>>> f = open("file.txt", "w")
>>> f.write("a\rb\nc\r\nd\n\re\n")
>>> f.close()
>>> open("file.txt").readlines()
['a\rb\n', 'c\r\n', 'd\n', '\re\n']
>>> open("file.txt", 'rU').readlines()
['a\n', 'b\n', 'c\n', '\n', 'd\n', '\n', 'e\n']
linecache 的文档似乎没有明确指出它如何处理行尾。根据实际观察,它使用通用换行符:
>>> for n in range(1, 8):
...   linecache.getline('file.txt', n)
...
'a\n'
'b\n'
'c\n'
'\n'
'd\n'
'\n'
'e\n'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接