2011-05-21 67 views
8

我做在python脚本备份,但我需要得到MB如何获得的tar.gz在(MB)文件大小在python

创建

?我怎样才能将tar.gz文件的大小以MB为单位的文件大小

+1

是否需要档案内部未压缩文件的大小,或者您只想要档案本身的大小? – plaes 2011-05-21 08:11:35

+0

只是档案本身的大小 – Mahakaal 2011-05-21 08:16:50

+0

另见:[可重复使用的库来获取人类可读的文件大小版本?](http://stackoverflow.com/a/1094933/562769) – 2014-08-28 15:53:11

回答

24

这不是从你的问题清楚你是否要将该文件的压缩或未压缩的大小,但在前者的情况下,很容易与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使除数将是一个浮动。)

更新:在下面的意见,Johnsyweb指出了更普遍producing human readable representations of file sizes一个有用的配方。

+0

这意味着我必须除以1024 * 1024才能在MB – Mahakaal 2011-05-21 08:18:52

+0

是的,没错。 – 2011-05-21 08:20:21

+2

另请参阅此配方[获取大量字节的人类可读表示](http://code.activestate.com/recipes/577081-humanized-representation-of-a-number-of-bytes/)。 – Johnsyweb 2011-05-21 08:36:39

2

使用os.stat()函数获取统计结构。该属性的st_size是文件的大小(以字节为单位)。

+0

(+1)似乎比我的想法好多了(我最初以为OP想要评估tar文件中的内容)。 – chl 2011-05-21 08:23:00

0

根据Python on-line docs,您应该查看TarInfo对象的size属性。

+0

将适用于tar.gz或只适用于tar – Mahakaal 2011-05-21 08:17:27

+0

@Mahakaal它也可以与'* .tar'文件一起工作(只读取'r'标志而不是'r:gz'传递给'tarfile.open ')。但是,它给出了tar文件中包含的每个元素的大小(虽然容易总结),所以也许有一种替代答案可能更适合您的需求。 – chl 2011-05-21 08:21:03

相关问题