在 Python 中获取文件大小? [复制]

Posted

技术标签:

【中文标题】在 Python 中获取文件大小? [复制]【英文标题】:Getting file size in Python? [duplicate] 【发布时间】:2011-09-29 08:00:56 【问题描述】:

是否有用于获取文件对象大小(以字节为单位)的内置函数?我看到有些人这样做:

def getSize(fileobject):
    fileobject.seek(0,2) # move the cursor to the end of the file
    size = fileobject.tell()
    return size

file = open('myfile.bin', 'rb')
print getSize(file)

但根据我使用 Python 的经验,它有很多辅助函数,所以我猜可能有一个内置函数。

【问题讨论】:

Path('./doc.txt').stat().st_size 【参考方案1】:

使用os.path.getsize(path)

返回路径的大小,以字节为单位。如果文件不存在或不可访问,请提高 OSError

import os
os.path.getsize('C:\\Python27\\Lib\\genericpath.py')

或使用os.stat(path).st_size

import os
os.stat('C:\\Python27\\Lib\\genericpath.py').st_size 

或使用Path(path).stat().st_size (Python 3.4+)

from pathlib import Path
Path('C:\\Python27\\Lib\\genericpath.py').stat().st_size

【讨论】:

谢谢大家。我不知道你能不能一次回复所有帖子,所以我只回复最后一个回复者。我似乎无法让它工作。 ` 文件“C:\\python\lib\genericpath.py”,第 49 行,在 getsize 返回 os.stat(filename).st_size 类型错误:stat() 参数 1 必须是没有 NULL 字节的编码字符串,而不是 str`跨度> 认为你需要 "C:\\python\\lib\\genericpath.py" - 例如os.path.getsize('C:\\Python27\\Lib\\genericpath.py') 或 os.stat('C:\\Python27\\Lib\\genericpath.py').st_size @696,Python 会让你有 NULL 字节作为字符串,但是将它们传递给 getsize 是没有意义的,因为文件名中不能有 NULL 字节 我在给定目录中的所有文件上都使用%timeit 运行,发现os.stat 稍微快一些(~6%)。 @16num 这很合乎逻辑,因为 os.path.getsize() 除了调用 os.stat().st_size 之外什么也没做。【参考方案2】:

你可以使用os.stat()函数,它是系统调用stat()的封装:

import os

def getSize(filename):
    st = os.stat(filename)
    return st.st_size

【讨论】:

以 kb 为单位返回,对吗? 不,以字节为单位。【参考方案3】:

您可以使用os.stat(path)拨打电话

http://docs.python.org/library/os.html#os.stat

【讨论】:

【参考方案4】:
os.path.getsize(path)

返回路径的大小(以字节为单位)。如果文件不存在或不可访问,则引发 os.error。

【讨论】:

就像给好奇的人的注释一样,getsize() 在幕后执行 os.stat(path).st_size,这是这里解释的另一种方法。【参考方案5】:

试试

os.path.getsize(filename)

它应该返回文件的大小,由 os.stat() 报告。

【讨论】:

以上是关于在 Python 中获取文件大小? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python---进阶---文件操作---获取文件夹下所有文件的数量和大小

如何在 C 中获取文件的大小? [复制]

在 PHP 中获取大文件(> 2 GB)文件大小的最佳方法? [复制]

Python 2.7,如何获取/检查列表的大小? [复制]

如何获取文件夹中文件的数量? [复制]

如何获取目录下的文件数(一行Python)