Jawaban lain berfungsi untuk file nyata, tetapi jika Anda memerlukan sesuatu yang berfungsi untuk "objek seperti file", coba ini:
# f is a file-like object.
f.seek(0, os.SEEK_END)
size = f.tell()
Ini berfungsi untuk file nyata dan StringIO, dalam pengujian terbatas saya. (Python 2.7.3.) API "objek seperti file" sebenarnya bukan antarmuka yang ketat, tetapi dokumentasi API menunjukkan bahwa objek seperti file harus mendukung seek()
dan tell()
.
Edit
Perbedaan lain antara ini dan os.stat()
Anda dapat stat()
file bahkan jika Anda tidak memiliki izin untuk membacanya. Jelas pendekatan mencari / memberi tahu tidak akan berhasil kecuali jika Anda telah membaca izin.
Edit 2
Atas saran Jonathon, inilah versi paranoid. (Versi di atas meninggalkan penunjuk file di akhir file, jadi jika Anda mencoba membaca dari file, Anda akan mendapatkan nol byte kembali!)
# 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)
Path('./doc.txt').stat().st_size