2017-05-24 1 views
0

Ich versuche, mehrere Dateien wie unten zu erstellen.Python Erstelle Dateiprobleme

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") 

Einige der Dateien werden ohne Probleme erstellt. Allerdings sind einige Dateien (ex.accessories.csv, admin.csv usw.) geben die folgenden Fehler:

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

Obwohl ich die Dateinamen ändern kann, für den Code zu arbeiten, ich frage mich, ob es einen Konflikt mit einer Dateinamenskonvention. Könnte jemand erklären helfen?

+0

Ist es möglich, dass einige dieser Dateien bereits im Verzeichnis vorhanden sind? – mauve

+1

''\ r'' ist ein Wagenrücklauf, den Ihr Betriebssystem in einem Dateinamen nicht erlaubt. Korrigieren Sie, indem Sie den Backslash ''Results \\ rf_pen_panel.csv'' oder die rohe Zeichenkette' r'Results \ rf_pen_panel.csv'' verdoppeln. (Ein roher String führt vor dem ersten Anführungszeichen ein 'r' vor und verhindert, dass umgekehrte Schrägstriche interpretiert werden.) –

+0

Noch besser. 'files = {name: open ('Ergebnisse \\% s.csv'% name, 'wt') für name in ('cooling', 'accessories', 'admin', 'console', 'grad_system')}' . Dann benutze 'files ['admin']', wo du 'admin_file' benutzt hättest. –

Antwort

5

\r in einem normalen Python-String-Literal ist ein Wagenrücklauf, nicht die zwei Zeichen, die Sie erwarten. Ihre Optionen sind:

  • eine rohe Stringliteral verwenden, wo Schrägstriche haben keine besondere Bedeutung: r"Results\rf_pen_panel.csv"

  • Verdoppeln Sie die Schrägstriche ihnen zu entkommen: "Results\\rf_pen_panel.csv"

  • verwenden Schrägstriche: über die einzige Teil von Windows, das umgekehrte Schrägstriche erfordert, ist die Befehlszeile. "Results/rf_pen_panel.csv"

+0

Dasselbe gilt für '\ a' und' \ n' als maskierte Literale. Siehe [die Python-Dokumente] (https://docs.python.org/2.0/ref/strings.html) – Gannon

+0

Vielen Dank. Nach dem Lesen der Antworten, fühle meine Frage war dumm. Vielen Dank für die Antworten. –

+0

@continuous_learner: Nicht dumm. Nur dein normaler täglicher Fehler, den du als Gewinnerfahrung besser fangen kannst. –

1

Der \r Charakter ist in Python bedeutungsvoll, es ist ein Wagenrücklauf (ASCII 13). Python versucht, die Datei Results[carriage return]f_pen_panel.csv

Zwei Lösungen für diese zu erstellen:

  • Entfliehen Sie Schrägstriche mit einem zusätzlichen Backslash: rf_pen_panel_file = open("Results\\rf_pen_panel.csv", "wt")
  • verwenden Schrägstriche stattdessen Python interpretiert sie als Pfadtrennzeichen: rf_pen_panel_file = open("Results/rf_pen_panel.csv", "wt")
Verwandte Themen