2017-06-04 55 views
-1

我一直在試圖運行使用Python 2.7在MacBook Pro上熊貓和不斷收到以下錯誤:熊貓IO錯誤:[錯誤13]許可被拒絕

文件「/用戶/霍夫斯塔特/蟒蛇/ lib中/ python2 0.7 /站點包/大熊貓/ IO/common.py」,線路376,在_get_handle F =開放(path_or_buf,模式)

IO錯誤:[錯誤13]權限被拒絕:「數據集/ cats_0.8_0。 6_0.4_0.2/target.csv'

它看起來像是由於某些原因,爲下面的文件創建的文件夾(包括target.csv)具有受限制的權限。下面是代碼如下所示:

def get_tables(df): 
    categorical_cols = [col for col in df.columns if col.endswith('_cat')] 
    train_table = df[categorical_cols] 
    for col in categorical_cols: 
     train_table = pd.concat(
      [ 
       train_table, pd.get_dummies(
        train_table[col], 
        prefix=col, 
        prefix_sep='_', 
        dummy_na=False).astype(int) 
      ], 
      axis=1, 
      join='inner') 
     train_table.drop(col, axis=1, inplace=True) 

    print('Tables Created :)') 
    return train_table 

沒有問題,創建表,但隨後試圖如下救他們時,我得到一個權限錯誤。

def save_tables(data_path, 
       df, 
       top_quant, 
       mh_quant, 
       ml_quant, 
       low_quant, 
       train=True): 

    df = categorize_features(df, top_quant, mh_quant, ml_quant, low_quant) 
    X = get_tables(df) 

    os.makedirs(data_path, True) 

    x_path = '{}/tournament_table.csv'.format(data_path) 

    if train: 
     x_path = '{}/train_table.csv'.format(data_path) 
     y = df['target'].to_frame() 
     y.columns = ['target'] 
     y.to_csv('{}/target.csv'.format(data_path), index=False) 
    else: 
     ids = df['id'].to_frame() 
     ids.columns = ['id'] 
     ids.to_csv('{}/ids.csv'.format(data_path), index=False) 

    X.to_csv(x_path, index=False) 
+2

錯誤的出現是因爲你要使用一些文件你沒有不是因爲'/ Users/Hofstadter/anaconda/lib/python2.7/site-packages/pandas/io/common.py'沒有正確的權限。 –

+0

@ juanpa.arrivillaga嗯,好吧,但爲什麼我不能訪問標準熊貓圖書館的一部分?有沒有一種方法可以重新安裝熊貓,讓我擁有正確的許可?如果有幫助,我正在使用Anaconda。 – 114

+0

如果你是'Hofstadter'並且文件屬於你,那麼你必須使用'u + r'或'a + r',而不是'o + r'來使它可讀。但是'mode'的價值是什麼? – DyZ

回答

0

我懷疑你的問題是不是呼叫to_csv()但如果您呼叫os.makedirs

調用os.makedirs(data_path, True)正在將「真」解釋爲模式的參數。請參閱:

makedirs(name [, mode=0o777][, exist_ok=False]) 

如果您想使用新目錄的默認模式,但忽略了現有的,您的通話應該是os.makedirs(data_path, exist_ok=True)

+0

謝謝,但如果我作出這樣的變化,我得到以下錯誤: 文件 「get_dataset.py」 62行,在save_tables os.makedirs(data_path,exist_ok = TRUE) 類型錯誤:makedirs()得到了一個意外關鍵字參數'exist_ok' – 114

+0

我明白了。你正在使用Python 2.7。 'os.makedirs()'是不同的。 請參閱[文檔](https://docs.python.org/2.7/library/os.html#os.makedirs)。把它叫做'os.makedirs(data_path)',但如果這些目錄已經存在,你將不得不手動處理異常情況。 'exist_ok'選項僅在Python 3中可用。 – Steve

+0

非常感謝,我應該看看。所以現在令人驚訝的是,該文件沒有任何權限問題。不過,我現在得到以下錯誤(我已經確認該文件夾在運行該程序之前並沒有存在,並且之後完成):'File「/Users/Hofstadter/anaconda/lib/python2.7/os。py「,第157行,在makedirs mkdir(name,mode)' 'OSError:[Errno 17]文件存在:'/ Users/Hofstadter/path/cats_0.8_0.6_0.4_0.2'' – 114

相關問題