【发布时间】:2011-08-30 03:27:21
【问题描述】:
我正在使用 python 脚本进行备份,但我需要获取以 MB 为单位创建的 tar.gz 文件的大小
我如何获得该文件的大小(以 MB 为单位)
【问题讨论】:
-
您想要存档中未压缩文件的大小,还是只想要存档本身的大小?
-
只是存档本身的大小
我正在使用 python 脚本进行备份,但我需要获取以 MB 为单位创建的 tar.gz 文件的大小
我如何获得该文件的大小(以 MB 为单位)
【问题讨论】:
使用os.stat() 函数获取统计结构。其st_size 属性是文件的大小(以字节为单位)。
【讨论】:
根据 Python on-line docs,您应该查看 TarInfo 对象的 size 属性。
【讨论】:
*.tar 文件(只需使用r 标志读取它,而不是将r:gz 传递给tarfile.open)。但是,它给出了 tar 文件中包含的每个元素的大小(虽然很容易总结),所以也许替代答案之一可能更适合您的需求。
从您的问题中不清楚您是想要压缩文件还是未压缩文件,但在前一种情况下,使用os.path.getsize 函数from the os module 很容易
>>> import os
>>> os.path.getsize('flickrapi-1.2.tar.gz')
35382L
要获得以兆字节为单位的答案,您可以将答案右移 20,例如
os.path.getsize('large.tar.gz') >> 20
虽然该操作将以整数形式完成 - 如果您想保留兆字节的小数部分,请改为除以 (1024*1024.0)。 (注意 .0 以便除数是浮点数。)
更新:在下面的 cmets 中,Johnsyweb 指出了一个更普遍的 producing human readable representations of file sizes 的有用配方。
【讨论】:
您可以使用下面的命令直接获取它而无需任何榛子
os.path.getsize('filename.tar') >> 20
print str(filename.tgz) + " MB"
【讨论】: