2013-07-19 29 views
8

我想檢查文件是否存在,如果存在,是否爲空。正確的方法來檢查Python中的空文件或丟失文件

如果該文件不存在,我想退出程序並顯示錯誤消息。

如果文件爲空,我想退出並顯示不同的錯誤消息。

否則我想繼續。

我一直在閱讀有關使用嘗試:除了:但我不知道如何構建代碼'蟒蛇'來實現我後?


感謝您對所有的答覆,我用下面的代碼去:

try: 
    if os.stat(URLFilePath + URLFile).st_size > 0: 
     print "Processing..." 
    else: 
     print "Empty URL file ... exiting" 
     sys.exit() 
except OSError: 
    print "URL file missing ... exiting" 
    sys.exit() 
+0

只是爲了澄清,該程序正在加載我正在檢查的文件的URL,做他們的東西,然後用'open(URLFile,'w')。close()'清零文件。我將每隔幾分鐘運行一次該程序,因此如果在此期間沒有添加新的URL,我希望它退出。 – TheRogueWolf

+0

可能重複[python如何檢查文件是否空](http://stackoverflow.com/questions/2507808/python-how-to-check-file-empty-or-not) –

+0

使用異常的可預見和可避免錯誤是懶惰的。檢查文件是否存在,如果存在,請檢查其大小。 –

回答

14

我在這裏使用os.stat

try: 
    if os.stat(filename).st_size > 0: 
     print "All good" 
    else: 
     print "empty file" 
except OSError: 
    print "No file" 
+0

這是IMO最好的解決方案。 –

+0

零字節文件怎麼樣? – shookees

+0

@shookees - 原諒我的無知,但零字節文件與空文件有什麼不同? – mgilson

1

os.path.exists等功能於os.path中。

至於閱讀,

你想要的東西像

if not os.path.exists(path): 
    with open(path) as fi: 
     if not fi.read(3): #avoid reading entire file. 
      print "File is empty" 
1

如何:

try: 
    myfile = open(filename) 
except IOError: # FileNotFoundError in Python 3 
    print "File not found: {}".format(filename) 
    sys.exit() 

contents = myfile.read() 
myfile.close() 

if not contents: 
    print "File is empty!" 
    sys.exit() 
+0

FileNotFoundError是一件事嗎? (它不適合我python2.7 - 這只是引發一個'NameError')對我來說,它是一個'IOError'。此外,我會阻止閱讀整個文件(如果用戶不小心提供了一個8 Gb的文件?)我認爲你可以從'os.stat'獲得空的/非空的信息。 – mgilson

+0

@mgilson:正確;我在Python 3中測試了'open(「blargh」)',並期望這個異常也會出現在Python 2中。所以我之前的版本實際上是正確的:) –

+0

不錯,我還沒有意識到它們劃分了IOError並創建了FileNotFoundError在py3k中。涼。 – mgilson

0

試試這個:

import os 
import sys 

try: 
    s = os.stat(filename) 
    if s.st_size == 0: 
     print "The file {} is empty".format(filename) 
     sys.exit(1) 
except OSError as e: 
    print e 
    sys.exit(2) 
相關問題