Python 跟踪读取的字节数

Python 跟踪读取的字节数,python,string,byte,Python,String,Byte,我想为我的一个PYTHON程序实现一个命令行进度条,它逐行读取文件中的文本 我可以通过以下两种方式之一实施进度表: (行数/总行数)或 (完成的字节数/总字节数) 我不在乎哪一个,但是“行数”似乎需要我循环浏览整个文档(可能非常大),以获取“总行数”的值 这似乎效率极低。我在跳出框框思考,也许如果我考虑文件的大小(更容易获得?)并跟踪已读取的字节数,它可能会成为一个良好的进度条度量 我可以使用os.path.getsize(file)或os.stat(file).st\u size来检索文件的大

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

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

  • (行数/总行数)或
  • (完成的字节数/总字节数)
  • 我不在乎哪一个,但是
    “行数”
    似乎需要我循环浏览整个文档(可能非常大),以获取
    “总行数”
    的值

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

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

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

    (另请注意,我认为手动输入一次读取的字节数不起作用,因为我需要单独处理每一行;否则,我需要在以后将其按“\n”分割。)

    或者,再短一点:


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

    而不是在
    数据上实际使用
    len
    。您还可以使用
    file.tell()
    获取当前位置并消除大部分所需的跟踪。
    bytesread = 0
    while True:
      line = fh.readline()
      if line == '':
        break
      bytesread += len(line)
    
    bytesread = 0
    for line in fh:
      bytesread += len(line)