我在linux上工作。 我想显示解析文件的百分比。这就是为什么在读了一下后我决定最准确的方法是获取我正在解析的文件的总大小(字节),然后在读取后计算每行的大小(字节)。
这是我的虚拟简化代码。
if __name__ == '__main__':
read_bytes = 0
total_file_size = os.path.getsize(myfile)
with open(myfile, 'r') as input_file:
for line in input_file:
read_bytes += sys.getsizeof(line)
print "do my stuff"
print total_file_size
print read_bytes
输出是:
193794194
203979278
显然有些东西在增加总体尺寸。 我试过了:
read_bytes += sys.getsizeof(line) - sys.getsizeof('\n')
输出是:
193794194
193309190
我一定错过了什么。
答案 0 :(得分:1)
使用len
代替sys.getsizeof()
:
sys.getsizeof()
通过解释器返回使用的字节来保存该对象。
>>> len('asdf')
4
>>> import sys
>>> sys.getsizeof('asdf')
37
除此之外,如果您在窗口中运行程序,则应使用二进制模式。
open(myfile, 'rb')
注意强>
使用file.tell,您无需计算当前位置。
答案 1 :(得分:0)
替换:
read_bytes += sys.getsizeof(line) - sys.getsizeof('\n')
with read_bytes += sys.getsizeof(line) - sys.getsizeof('\n') - 49 as 49 is ascii of '0'