2017-05-24 110 views
0

我想創建如下的多個文件。Python創建文件問題

cooling_file = open("Results\cooling.csv", "wt") 
accessories_file = open("Results\accessories.csv", "wt") 
admin_file = open("Results\admin.csv", "wt")   
console_file = open("Results\console.csv", "wt")  
grad_system_file = open("Results\grad_system.csv", "wt")   
image_quality_file = open("Results\image_quality.csv", "wt")     
magnet_enclosure_file = open("Results\magnet_enclosure.csv", "wt")   
magnet_cryogens_file = open("Results\magnet_cryogens.csv", "wt")   
non_product_file = open("Results\non_product.csv", "wt")   
other_file = open("Results\other.csv", "wt")   
patient_handling_file = open("Results\patient_handling.csv", "wt")  
pdu_power_file = open("Results\pdu_power.csv", "wt")   
rf_pen_panel_file = open("Results\rf_pen_panel.csv", "wt")   
rf_coils_file = open("Results\rf_coils.csv", "wt")  
software_file = open("Results\software.csv", "wt")   
system_file = open("Results\system.csv", "wt")   
sys_cabinet_file = open("Results\sys_cabinet.csv", "wt") 

某些文件創建時沒有任何問題。但是,某些文件(ex.accessories.csv,admin.csv等)輸出以下錯誤:

IOError: [Errno 22] invalid mode ('wt') or filename: 'Results\rf_pen_panel.csv' 

雖然我可以改變文件名的代碼的工作,我想知道是否有衝突用文件命名約定。有人可以幫忙解釋。

+0

這些文件中有些可能已存在於目錄中? – mauve

+1

''\ r''是一個回車符,你的操作系統不允許在一個文件名中。通過加倍反斜槓「Results \\ rf_pen_panel.csv」或使用原始字符串「r'Results \ rf_pen_panel.csv」來修復。 (原始字符串在第一個引號之前加上'r',並停止反斜槓的解釋。) –

+0

更好。 (''cooling','accessories','admin','console','grad_system')}中的文件= {name:open('Results \\%s.csv'%name,'wt' 。然後使用'files ['admin']'你可以使用'admin_file'。 –

回答

5

\r在一個正常的Python字符串文字是一個回車,而不是你期待的兩個字符。您的選項是:

  • 使用原始字符串字面量,其中反斜槓沒有特殊的意義:r"Results\rf_pen_panel.csv"

  • 雙反斜線逃避他們:"Results\\rf_pen_panel.csv"

  • 使用正斜槓:他們唯一需要反斜槓的Windows部分是命令行。 "Results/rf_pen_panel.csv"

+0

'\ a'和'\ n'同樣適用於轉義文字。請參閱[Python文檔](https://docs.python.org/2.0/ref/strings.html) – Gannon

+0

謝謝。在閱讀答案後,感覺我的問題是愚蠢的。非常感謝你的答覆。 –

+0

@continuous_learner:不笨。只是你平常每天的錯誤,你會更好地捕捉獲得經驗。 –

1

\r字符是有意義的Python中,這是一個回車符(ASCII 13)。蟒蛇試圖創建文件Results[carriage return]f_pen_panel.csv

兩個解決辦法:

  • 加上額外的反斜槓讓您遠離反斜線:rf_pen_panel_file = open("Results\\rf_pen_panel.csv", "wt")
  • 改用正斜線,巨蟒將它們解釋爲路徑分隔符:rf_pen_panel_file = open("Results/rf_pen_panel.csv", "wt")