Python 行读取大小(以字节为单位)

标签 python file size byte line

我在 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

我一定错过了一些东西。

最佳答案

使用len而不是sys.getsizeof():

sys.getsizeof() 返回解释器用来保存该对象的字节。

>>> len('asdf')
4
>>> import sys
>>> sys.getsizeof('asdf')
37

除此之外,如果您在Window中运行程序,则应该使用二进制模式。

open(myfile, 'rb')

注意

使用file.tell ,您不需要计算当前位置。

关于Python 行读取大小(以字节为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18233948/

相关文章:

python - 使用 h5py 一次将多维结构化 numpy 数组写入 hdf5 一个字段会引发 numpy 广播错误

python - 在python中连接两个守护进程

Python 使用 pytest_mock 在函数中模拟多个查询

java - 在java中将文件重命名为另一个文件

c++ - Qt 更改主窗口几何形状

python - 修改 matplotlib 颜色图

c - C中的递归子目录处理

c - 搜索并打印目录的所有文件和子文件夹

excel - *.csv 增加文件大小

apache-flex - 更改 Flex 中复选框的大小