0

我想为我的一个程序 IN PYTHON 实现一个命令行进度条,它逐行从文件中读取文本。

我可以通过以下两种方式之一实施进度量表:

  1. (行数/总行数)或
  2. (完成的字节数/总字节数)

我不在乎哪个,但"number of lines"似乎需要我遍历整个文档(可能非常大)才能获得"total lines".

这似乎效率极低。我在思考,如果我获取文件的大小(更容易获得?)并跟踪已读取的字节数,它可能会成为一个很好的进度条指标。

我可以使用os.path.getsize(file)oros.stat(file).st_size来检索文件的大小,但我还没有找到一种方法来跟踪readline(). 我正在使用的文件应该用 ASCII 编码,甚至可能是 Unicode,所以......我应该只确定使用的编码,然后记录读取或使用的字符数或读取的每一行的os.getsizeof()某些函数吗?len()

我相信这里会有问题。有什么建议么?

(PS - 我不认为手动输入一次读取的字节数会起作用,因为我需要单独处理每一行;否则我需要在之后用“\n”将其拆分。 )

4

1 回答 1

1
bytesread = 0
while True:
  line = fh.readline()
  if line == '':
    break
  bytesread += len(line)

或者,更短一点:

bytesread = 0
for line in fh:
  bytesread += len(line)

使用os.path.getsize()(or os.stat) 是确定文件大小的有效方法。

于 2013-01-20T11:24:50.680 回答