如何在Python中获取tar.gz文件的大小(MB)

14 投票
5 回答
36919 浏览
提问于 2025-04-16 18:04

我正在用Python脚本做备份,但我需要知道生成的tar.gz文件的大小,单位是MB。

我该怎么才能得到这个文件的大小,单位是MB呢?

5 个回答

3

使用 os.stat() 这个函数可以获取一个文件的状态信息。这个状态信息里面有一个叫 st_size 的属性,它表示文件的大小,单位是字节。

7

为了获取文件的大小(以MB为单位),我写了这个函数:

import os

def get_size(path):
        size = os.path.getsize(path)
        if size < 1024:
            return f"{size} bytes"
        elif size < pow(1024,2):
            return f"{round(size/1024, 2)} KB"
        elif size < pow(1024,3):
            return f"{round(size/(pow(1024,2)), 2)} MB"
        elif size < pow(1024,4):
            return f"{round(size/(pow(1024,3)), 2)} GB"
>>> get_size("k.tar.gz")
1.4MB
42

从你的问题中不太清楚你是想要文件的压缩大小还是未压缩大小,不过如果是想要压缩大小的话,可以很简单地使用 os.path.getsize 这个函数,来自 os模块

>>> import os
>>> os.path.getsize('flickrapi-1.2.tar.gz')
35382L

如果你想把结果转换成兆字节(MB),可以把答案右移20位,比如:

os.path.getsize('large.tar.gz') >> 20

不过这个操作会用到整数,如果你想保留兆字节的小数部分,可以用 (1024*1024.0) 来除。记得加上 .0,这样除数就会变成小数。

更新:在下面的评论中,Johnsyweb 提到了一种更通用的方法,可以生成更易读的文件大小表示

撰写回答