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

Mah*_*aal 12 python linux file-io

我在python脚本中做备份,但我需要获得以MB为单位创建的tar.gz文件的大小

我怎样才能获得该文件的MB大小

Mar*_*air 38

从您的问题中不清楚您是否想要压缩文件或未压缩文件的大小,但在前一种情况下,使用os模块中os.path.getsize函数很容易

>>> import os
>>> os.path.getsize('flickrapi-1.2.tar.gz')
35382L
Run Code Online (Sandbox Code Playgroud)

要以兆字节为单位获得答案,您可以将答案右移20,例如

os.path.getsize('large.tar.gz') >> 20
Run Code Online (Sandbox Code Playgroud)

虽然该操作将以整数形式完成 - 如果您想保留一兆字节的分数,请(1024*1024.0)改为除以.(注意.0这样除数将是一个浮点数.)

更新:在下面的评论中,Johnsyweb指出了一个有用的方法,可以更一般地生成文件大小的人类可读表示.

  • 另请参阅此配方[以获得多个字节的人类可读表示](http://code.activestate.com/recipes/577081-humanized-representation-of-a-number-of-bytes/). (3认同)

jak*_*bin 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"
Run Code Online (Sandbox Code Playgroud)
>>> get_size("k.tar.gz")
1.4MB
Run Code Online (Sandbox Code Playgroud)