跟踪读取的字节数

时间:2013-01-20 11:03:25

标签: python string byte

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

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

  1. (行数/总行数)或
  2. (已完成的字节数/总字节数)
  3. 我不在乎哪个,但"number of lines"似乎要求我遍历整个文档(可能非常大)只是为了获得"total lines"的值。

    这似乎效率极低。我在盒子外面思考并考虑如果我采用文件的大小(更容易获得?)并跟踪已读取的字节数,它可能会产生良好的进度条度量。

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

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

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

1 个答案:

答案 0 :(得分:0)

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()(或os.stat)是确定文件大小的有效方法。

相关问题