如何在Python中获取文件的大小?


当前回答

我们有两个选择,都包括导入os模块

1)

import os
os.stat("/path/to/file").st_size

作为os.stat()函数返回一个包含许多头文件的对象,包括文件创建时间和最后修改时间等。其中st_size给出了文件的确切大小。 文件路径可以是绝对路径也可以是相对路径。

2) 在这里,我们必须提供准确的文件路径,文件路径可以是相对路径也可以是绝对路径。

import os
os.path.getsize("path of file")

其他回答

严格地坚持这个问题,Python代码(+伪代码)将是:

import os
file_path = r"<path to your file>"
if os.stat(file_path).st_size > 0:
    <send an email to somebody>
else:
    <continue to other things>

使用os.path.getsize:

>>> import os
>>> os.path.getsize("/path/to/file.mp3")
2071611

输出以字节为单位。

我们有两个选择,都包括导入os模块

1)

import os
os.stat("/path/to/file").st_size

作为os.stat()函数返回一个包含许多头文件的对象,包括文件创建时间和最后修改时间等。其中st_size给出了文件的确切大小。 文件路径可以是绝对路径也可以是相对路径。

2) 在这里,我们必须提供准确的文件路径,文件路径可以是相对路径也可以是绝对路径。

import os
os.path.getsize("path of file")
import os


def convert_bytes(num):
    """
    this function will convert bytes to MB.... GB... etc
    """
    for x in ['bytes', 'KB', 'MB', 'GB', 'TB']:
        if num < 1024.0:
            return "%3.1f %s" % (num, x)
        num /= 1024.0


def file_size(file_path):
    """
    this function will return the file size
    """
    if os.path.isfile(file_path):
        file_info = os.stat(file_path)
        return convert_bytes(file_info.st_size)


# Lets check the file size of MS Paint exe 
# or you can use any file path
file_path = r"C:\Windows\System32\mspaint.exe"
print file_size(file_path)

结果:

6.1 MB

如果我想从字节转换到任何其他单位,我使用位移位技巧。如果右移10,基本上就是按一个数量级(倍数)移动。

例如:5GB为5368709120字节

print (5368709120 >> 10)  # 5242880 kilobytes (kB)
print (5368709120 >> 20 ) # 5120 megabytes (MB)
print (5368709120 >> 30 ) # 5 gigabytes (GB)