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