2017-05-24 108 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")