2011-07-06 33 views
286

Có chức năng tích hợp để nhận kích thước của đối tượng tệp theo byte không? Tôi thấy một số người làm điều gì đó như thế này:Nhận kích thước tệp bằng Python?

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) 

Nhưng từ kinh nghiệm của tôi với Python, nó có rất nhiều chức năng trợ giúp, vì vậy tôi đoán có thể có một trình cài sẵn.

Trả lời

113
os.path.getsize(path) 

Trả lại kích thước theo byte, của đường dẫn. Nâng cao os.error nếu tệp không tồn tại hoặc không thể truy cập được.

+0

Đơn giản chỉ cần và dễ dàng :) –

411

Cố gắng có một cái nhìn tại http://docs.python.org/library/os.path.html#os.path.getsize

os.path.getsize(path) Return the size, in bytes, of path. Raise os.error if the file does not exist or is inaccessible.

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

HOẶC

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

Cảm ơn tất cả các bạn. Tôi không biết nếu bạn có thể trả lời tất cả các bài viết cùng một lúc, vì vậy tôi sẽ chỉ rply cho người trả lời cuối cùng. Tôi không thể làm cho nó hoạt động được. 'File" C: \\ python \ lib \ genericpath.py ", dòng 49, trong getize return os.stat (tên tệp) .st_size LoạiError: đối số stat() 1 phải được mã hóa chuỗi mà không có NULL byte, không phải str' –

+1

Hãy suy nghĩ bạn cần "C: \\ python \\ lib \\ genericpath.py" - vd os.path.getsize ('C: \\ Python27 \\ Lib \\ genericpath.py') hoặc os.stat ('C: \\ Python27 \\ Lib \\ genericpath.py'). st_size –

+0

@ 696, Python sẽ cho phép bạn có chuỗi NULL, nhưng nó không có ý nghĩa để chuyển chúng thành getize vì tên tập tin không thể có NULL byte trong nó –

14

Hãy thử

os.path.getsize(filename) 

Nó phải trả về kích thước tệp, được báo cáo bởi os.stat().

44

Bạn có thể sử dụng os.stat() chức năng, mà là một wrapper của hệ thống gọi stat():

import os 

def getSize(filename): 
    st = os.stat(filename) 
    return st.st_size 
Các vấn đề liên quan