2017-05-24 10 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''はあなたのOSがファイル名で許さないキャリッジリターンです。バックスラッシュ ''Results \\ rf_pen_panel.csv' 'を2倍にするか、生の文字列' r'Results \ rf_pen_panel.csv "を使用して修正してください。 (生の文字列は、最初の引用の前に 'r 'を付加し、バックスラッシュを解釈しないようにします。) –

+0

さらに優れています。 ( '冷却'、 'アクセサリー'、 '管理'、 'コンソール'、 'grad_system')の名前のための 'ファイル= {名前=開いている( '結果\\%s.csv'%name、 'wt' 。次に、 'admin_file'を使用した' files ['admin'] 'を使います。 –

答えて

5

通常のPython文字列リテラルは、期待している2文字ではなく、復帰文字です。あなたのオプションは以下のとおりです。バックスラッシュはエスケープするr"Results\rf_pen_panel.csv"

  • ダブル:"Results\\rf_pen_panel.csv"

  • 使用スラッシュを:

    • は、バックスラッシュは特別な意味を持っていない場合は、リテラル生の文字列を使用してのみについてバックスラッシュを必要とするWindowsの一部はコマンドラインです。 "Results/rf_pen_panel.csv"

  • +0

    '\ a'と' \ n'はエスケープされたリテラルとして同じです。 [The Python docs](https://docs.python.org/2.0/ref/strings.html) – Gannon

    +0

    ありがとうございます。答えを読んだあと、私の質問は気まずかったと感じます。回答いただきありがとうございます。 –

    +0

    @continuous_learner:ダムではありません。あなたの正常な毎日のエラーだけで、あなたはゲイの経験として捉えるのが得意です。 –

    1

    \r文字はPythonで意味がある、それはキャリッジリターン(ASCII 13)です。 Pythonは、ファイルを作成しようとしました。このへResults[carriage return]f_pen_panel.csv

    2種類の溶液:

      は、余分なバックスラッシュであなたのバックスラッシュをエスケープ
    • :前方rf_pen_panel_file = open("Results\\rf_pen_panel.csv", "wt")
    • 使用ではなく、Pythonがパスセパレータとしてそれらを解釈スラッシュ:rf_pen_panel_file = open("Results/rf_pen_panel.csv", "wt")