如何在Python中获取文件的行计数

如何在Python中获取文件的行计数,python,string,loops,file,command-prompt,Python,String,Loops,File,Command Prompt,我正在尝试使用命令提示符获取文件的行计数。然而,当我执行代码时,我得到了0的输出 import sys file = open(sys.argv[1],"r") lines=0 line=file.readline() while line !="": lines=lines+1 line=file.readline() print("Lines:"+str(lines)+"\n") file.close()

我正在尝试使用命令提示符获取文件的行计数。然而,当我执行代码时,我得到了0的输出

import sys
file = open(sys.argv[1],"r")
lines=0
line=file.readline()
while line !="":
  lines=lines+1
  line=file.readline()
print("Lines:"+str(lines)+"\n")
file.close()

这段代码运行得非常好,文件中的行被删除。这导致了0的输出。我想您想要的是
读行
而不是
读行
要获取行数,请尝试:

import sys
file = open(sys.argv[1],"r")
lines = file.readlines()
file.close()
line_count = len(lines)
print(f"There are {line_count} lines")

如果我在MacOS上使用Python3.8.5以
python myscript.py myfile.txt
的形式运行代码,那么您的代码对我来说运行良好

不过,脚本可以稍微清理一下。最好在读取文件时使用Python的
open()
上下文处理程序,使用
readlines()
方法一次获取所有行,使用Python的内置工具进行字符串格式化。然后你可以像这样简单地进行整个计数:

import sys
with open(sys.argv[1]) as file:
    lines = len(file.readlines())
print(f"Lines: {lines}\n")

您可能还想考虑使用Python的代码> AgPARSE> 模块来处理您的参数。

这是否回答了您的问题?代码可以工作,但是,“数据中的行被删除了”。当我使用此代码时,我得到0。这给了我以下错误:IndexError:list index超出范围是的,我在这个答案的早期版本中错误地理解了参数的顺序。结果证明你的代码对我来说运行正常。您确定没有指定空文件吗?否:(很好,它返回的值为0。请仔细检查您的文件,并检查您的脚本是否从argv中选取了正确的参数。谢谢!您是对的,我发现数据中的行已被删除。有时,最愚蠢的事情会让您感到困惑。:)这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论-
import sys
file = sys.argv[1]

with open(file, "r") as f:
    num_lines = len(f.readlines())
import sys
with open(sys.argv[1]) as file:
    lines = len(file.readlines())
print(f"Lines: {lines}\n")