使用python计算行号

使用python计算行号,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,可能重复: 在我的工作中,我需要打开一个文件并计算其中的行数,我试着用这个 Last\u Line=len(打开(文件名).readlines()) 它工作得很好。现在我有一个问题,文件中的实际行数是453,但是如果我打印最后一行它只显示339。如果我尝试 print linecache.getline(File_Name, 350) 它显示第350行的内容 我尝试在所有模式下打开文件。 是文件问题还是我的逻辑问题? 请帮忙 谢谢您的行尾不一。IDE将它们都视为有效的,而Python则不是。

可能重复:

在我的工作中,我需要打开一个文件并计算其中的行数,我试着用这个

Last\u Line=len(打开(文件名).readlines())

它工作得很好。现在我有一个问题,文件中的实际行数是453,但是如果我打印
最后一行
它只显示339。如果我尝试

print linecache.getline(File_Name, 350)
它显示第350行的内容

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


谢谢

您的行尾不一。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'

“所有模式”是什么意思?你试过通用行结束模式吗?不是重复的。其中一个问“我怎么做?”,这一个问“我怎么做有什么问题?”@IgnacioVazquez Abrams我试过这些模式,'r','rb',r+'这是什么类型的文件?你能尝试其他文件吗?@Antony Hatchkins linecache可以读取文件中的任何一行