2010-03-24 44 views

Antwort

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

'stat.ST_SIZE' statt 6 – wRAR

+1

, die zu fein ist. aber ich möchte nicht stat importieren. Es ist kurz und süß genug und die Größe der Liste wird sich in absehbarer Zeit nicht ändern. – ghostdog74

+48

@wRAR. Os.stat (‚Datei‘) st_size ist noch besser –

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

Sicherheitsgründen Sie 'OSError' fangen müssen kann und das Rück Falsch. – kennytm

+3

Was ist der Unterschied/Vorteil mit dieser vs os.state ('Datei'). St_size? –

+0

Sieht aus wie die beiden das gleiche unter der Haube sind: https://stackoverflow.com/a/18962257/1397061 –

16

wenn aus irgendeinem Grund hatten Sie bereits die Datei, die Sie versuchen, diese öffnen konnte:

>>> 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

Sowohl getsize() und stat() eine Exception aus, wenn die Datei nicht existiert. Diese Funktion gibt Wahr/Falsch, ohne zu werfen:

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

Auf jeden Fall wie mit '' os.path.getsize zu handhaben() '' –

+3

Es gibt eine Race-Bedingung, da die Datei sein kann zwischen den Aufrufen von 'os.path.isfile (fpath)' und 'os.path.getsize (fpath)' entfernt, in welchem ​​Fall die vorgeschlagene Funktion eine Ausnahme auslöst. – s3rvac

+1

besser versuchen, die 'OSError' statt wie vorgeschlagen [in einem anderen Kommentar] (http://stackoverflow.com/questions/2507808/python-how-to-check-file-empty-or-not/15924160# zu fangen Kommentar2503155_2507819). – j08lue

6

Ok, damit ich ghostdog74's answer und die Kommentare kombinieren werden, nur so zum Spaß.

False bedeutet eine nicht leere Datei.

wir also eine Funktion schreiben:

import os 

def file_is_empty(path): 
    return os.stat(path).st_size==0 
Verwandte Themen