其他答案适用于实际文件,但如果您需要对“类文件对象”有效的内容,请尝试如下:# f is a file-like object. f.seek(0, os.SEEK_END)size = f.tell()
在我有限的测试中,它适用于真正的文件和StringIO。(Python2.7.3.)当然,“类文件对象”api并不是一个严格的接口,但是API文档建议类似文件的对象应该支持seek()和tell().
编辑
这和os.stat()你能stat()一个文件,即使你没有读取它的权限。显然,除非您具有读取权限,否则搜索/告知方法将无法工作。
编辑2
在乔纳森的建议下,这是一个偏执的版本。(上面的版本将文件指针留在文件的末尾,因此,如果要从文件中读取文件,就会得到零字节!)# 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)