2015-04-14 64 views
0

我有一個函數爲新文件輪詢文件夾,然後在顯示時使用numpy.loadtext加載它們。該函數從運行30秒的while循環中調用。該功能在大多數情況下都能正常工作,但對於某些文件,似乎是隨機的,我得到錯誤IOError:[Errno 13] Permission denied:'myfilename1.txt'。這裏是我的功能的內容:使用numpy.loadtext時IOError [Errno 13]?

before = dict([(f, None) for f in os.listdir(mydir)]) 
while 1: 
    after = dict([(f, None) for f in os.listdir(mydir)]) 
    added = [f for f in after if f not in before] 

    # New File 
    if added: 
     raw = numpy.loadtxt(mydir + added[0]) 

     return raw 

任何想法爲什麼發生這種情況?它能夠正確地輪詢和讀取大多數傳入的文本文件,但有時會吐出錯誤,我找不到系統的原因。

更新:

與使用loadtxt的完整路徑有關。當我將工作目錄更改爲文件所在的目錄時,我不再收到權限錯誤。

+1

這聽起來不像一個'numpy'問題嘗試;這聽起來像是一個權限問題。你的用戶帳戶是否有權限訪問這些特定的文件? – dbliss

+0

公平地確定它不是一個權限問題,因爲它不會影響所有傳入的文件。去嘗試建議的答案,看看是否有幫助。 – user1566200

+0

與使用loadtxt的完整路徑有關。當我將工作目錄更改爲文件所在的目錄時,我不再收到權限錯誤。 – user1566200

回答

0

您是否試過將文件作爲只讀文件打開,如果該文件被另一個應用程序訪問(或者當前仍在創建),則可能是衝突。

# New File 
if added: 
    with open(mydir + added[0], 'r') as f: 
     raw = numpy.loadtxt(f) 

您也可以嘗試某種形式的IO錯誤處理,這等待一小會兒,然後再

import time 

before = dict([(f, None) for f in os.listdir(mydir)]) 
added = False 
while 1: 

    # New File 
    if added: 
     try: 
      raw = numpy.loadtxt(mydir + added[0]) 

      return raw 
     except IOError: 
      time.sleep(5) 
    else: 
     after = dict([(f, None) for f in os.listdir(mydir)]) 
     added = [f for f in after if f not in before] 
+0

仍然不起作用(經常捕捉異常,所以它聽起來不像一個不完整的文件問題)。當我從命令行運行numpy.loadtxt時,它加載正常。也許是路徑問題? – user1566200

+0

以下鏈接是否有幫助:http://stackoverflow.com/questions/13246114/python-ioerror-errno-13-permission-denied。可能是因爲您嘗試打開文件夾作爲文件? –

相關問題