2010-03-24 44 views

Trả lời

176
>>> import os 
>>> os.stat("file").st_size == 0 
True 
+9

'stat.ST_SIZE' thay vì 6 – wRAR

+1

cũng tốt. nhưng tôi không muốn nhập chỉ số. Nó đủ ngắn và ngọt và vị trí kích thước trong danh sách được trả về sẽ không thay đổi bất cứ lúc nào sớm. – ghostdog74

+48

@wRAR: os.stat ('file'). St_size thậm chí còn tốt hơn –

87
import os  
os.path.getsize(fullpathhere) > 0 
+6

Để an toàn bạn có thể cần phải bắt 'OSError' và trở về False. – kennytm

+3

Sự khác biệt/lợi thế khi sử dụng điều này so với os.state ('tệp') là gì. –

+0

Có vẻ như cả hai đều giống nhau dưới mui xe: https://stackoverflow.com/a/18962257/1397061 –

16

nếu vì một lý do nào bạn đã có file mở bạn có thể thử này:

>>> with open('New Text Document.txt') as my_file: 
...  # I already have file open at this point.. now what? 
...  my_file.seek(0) #ensure you're at the start of the file.. 
...  first_char = my_file.read(1) #get the first character 
...  if not first_char: 
...   print "file is empty" #first character is the empty string.. 
...  else: 
...   my_file.seek(0) #first character wasn't empty, return to start of file. 
...   #use file now 
... 
file is empty 
54

Cả getsize()stat() sẽ ném một ngoại lệ nếu các tập tin không tồn tại. Hàm này sẽ trả về True/False mà không cần ném:

import os 
def is_non_zero_file(fpath): 
    return os.path.isfile(fpath) and os.path.getsize(fpath) > 0 
+0

Chắc chắn như sử dụng '' os.path.getsize() '' –

+3

Có một điều kiện chủng tộc vì tệp có thể loại bỏ giữa các cuộc gọi đến 'os.path.isfile (fpath)' và 'os.path.getsize (fpath)', trong trường hợp đó hàm được đề xuất sẽ tăng một ngoại lệ. – s3rvac

+1

Thay vào đó, hãy cố gắng nắm bắt 'OSError', như được đề xuất [trong một nhận xét khác] (http://stackoverflow.com/questions/2507808/python-how-to-check-file-empty-or-not/15924160# comment2503155_2507819). – j08lue

6

Ok vì vậy tôi sẽ kết hợp ghostdog74's answer và các nhận xét, chỉ để giải trí.

>>> import os 
>>> os.stat('c:/pagefile.sys').st_size==0 
False 

False là tệp không trống.

Vì vậy, chúng ta hãy viết một hàm:

import os 

def file_is_empty(path): 
    return os.stat(path).st_size==0 
Các vấn đề liên quan