在 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---进阶---文件操作---获取文件夹下所有文件的数量和大小