如何检查在Python中的文件大小?

我正在Windows中编写一个Python脚本。 我想根据文件大小做一些事情。 例如,如果大小大于0,我会发送电子邮件给某人,否则继续其他事情。

如何检查文件大小?


使用os.stat ,并使用生成对象的st_size成员:

>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
(33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732)
>>> statinfo.st_size
926L

输出以字节为单位。


使用os.path.getsize

>>> import os
>>> b = os.path.getsize("/path/isa_005.mp3")
>>> b
2071611L

输出以字节为单位。


其他答案适用于真实文件,但如果您需要某些适用于“文件类对象”的内容,请尝试以下操作:

# f is a file-like object. 
f.seek(0, os.SEEK_END)
size = f.tell()

它适用于真正的文件和StringIO,在我的有限测试中。 (Python 2.7.3。)当然,“类文件对象”API并不是真正的严格界面,但API文档建议文件类对象应该支持seek()tell()

编辑

这个和os.stat()之间的另一个区别是,即使你没有读权限,你也可以stat()一个文件。 除非您有阅读许可,否则显然这种寻求/告知方法将不起作用。

编辑2

在Jonathon的建议下,这是一个偏执狂的版本。 (上面的版本将文件指针留在文件的末尾,所以如果你想从文件读取数据,你会得到零字节!)

# f is a file-like object. 
old_file_position = f.tell()
f.seek(0, os.SEEK_END)
size = f.tell()
f.seek(old_file_position, os.SEEK_SET)
链接地址: http://www.djcxy.com/p/42301.html

上一篇: How to check file size in python?

下一篇: get data from URL without having variables