【问题标题】:How to get a line count of a file in Python [duplicate]如何在Python中获取文件的行数[重复]
【发布时间】:2024-01-10 20:16:01
【问题描述】:

我正在尝试使用命令提示符获取文件的行数。但是,当我执行代码时,我得到 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

【问题讨论】:

标签: python string loops file command-prompt


【解决方案1】:

我想你想要readlines 而不是readline

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
【解决方案2】:
import sys
file = open(sys.argv[1],"r")
lines = file.readlines()
file.close()
line_count = len(lines)
print(f"There are {line_count} lines")

【讨论】:

  • 当我使用这个代码时得到 0
【解决方案3】:

要获取您的行数,请尝试this

import sys, os

def file_len(fname):
    if os.stat(file_path).st_size == 0:
        print('File is empty')
        return 0
    with open(fname) as f:
        for i, l in enumerate(f):
            pass
    return i + 1

print(file_len(sys.argv[1]))

【讨论】:

  • 否 :( 好收获
【解决方案4】:
import sys
file = sys.argv[1]

with open(file, "r") as f:
    num_lines = len(f.readlines())

【讨论】:

  • 返回值 0
  • 再次检查您的文件,并确保您的脚本从 argv 中获取正确的参数。
  • 谢谢!你是对的我发现数据里面的行被删除了。
  • 有时最愚蠢的事情会让你大吃一惊。 :)
【解决方案5】:

如果我在 MacOS 上使用 Python 3.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 的 argparse 模块来处理您的参数。

【讨论】:

  • 它给了我以下错误:IndexError: list index out of range
  • 是的,我在这个答案的早期版本中弄错了参数的顺序。原来你的代码对我来说运行良好。你确定你没有指定一个空文件吗?
最近更新 更多