2011-09-28 80 views
0

我有一個相當複雜的工作Enthought/Python程序:os.path.join在Enthought/Python的返回Errno22即返回該錯誤

File "C:\Users\riddle\Desktop\FCI2\src\equation.py", line 41, in main 
fci_data = np.load(os.path.join(local_data_path, "fci_data.npy")) 
File "C:\Python27\lib\site-packages\numpy\lib\npyio.py", line 329, in load 
fid = open(file, "rb") 
IOError: [Errno 22] invalid mode ('rb') or filename: 'C:\\Users\white\\Desktop\ 
\FCI2New\\data\\fci_data.npy' 

對於這一點:

fci_data = np.load(os.path.join(local_data_path, "fci_data.npy")) 
    fci_data = fci_data.replace("'\\','/'") 

額外的斜槓讓我特別困惑。 local_data_path是全局的,定義如下:

local_data_path = static.base_data_path 
base_data_path = "C:\Documents and Settings\white\Desktop\FCI2New\data" (from the  static module) 

任何人都有一個想法這裏可能是什麼問題? 'rb'應該是fci_data的正確模式。請原諒任何錯誤或明顯的問題,我是一個初學者。

安妮

+0

也許一些有趣的事情發生了,由於魔法轉換 「C:\ Documents和Settings」 到 「C:\用戶」。如果您直接指定base_data_path = r「C:\ Users \ ....」,它會起作用嗎?另外,根據定義,base_data_path或者需要反斜槓,或者使用原始字符串(正如我對字母r所做的那樣,看起來好多了)。爲什麼你需要用正斜槓替換你的反斜槓? – DaveP

+0

錯誤消息中反斜槓的倍數是因爲它顯示'repr(the_path)'。令人驚訝的是,在「白色」之前的單個反斜槓......是來自複製/粘貼的,還是你手動輸入的? –

回答

0

首先嚐試正常化的路徑:

local_data_path = os.path.normpath(local_data_path)