2016-04-06 5 views
-2

Das folgende Skript zeigt Syntaxfehler in Zeile "mit offenem ..."Python. CSV zum Lesen einer Datei verwenden. Syntaxfehler

#!/usr/bin/python 

import fileinput; 
import csv; 

def read_csv_file (file_name): 

    with open('file.csv', 'r') as my_csv_file: 
     reader = csv.reader(my_csv_file) 
      for row in reader: 
       print (row) 

read_csv_file(); 
+2

Die Importanweisung sollte entweder eingerückt oder aus der Funktion entfernt werden. Einrückung ist in Python syntaktisch signifikant. Im Allgemeinen sollten Importanweisungen nicht in Funktionen enthalten sein, sie sollten oben in der Datei stehen. –

+0

Ihr Beispiel hat einen Einrückungsfehler bei 'import csv', bevor es zum Syntaxfehler kommt. Bitte aktualisieren Sie auf ein lauffähiges Beispiel, das den Fehler anzeigt ... einschließlich das Einfügen von '<= SYNTAX ERROR' in einen Kommentar. Wir möchten genau das ausführen, was Sie ausführen. – tdelaney

+0

Die Anweisung "import csv" wurde entfernt. Noch Syntaxfehler. – oradbanj

Antwort

2

Ihrem Code:

with open('file.csv', 'r') as my_csv_file: 
    reader = csv.reader(my_csv_file) 
     for row in reader: 
      print (row) 

hat falschen Einzug. Es sollte sein:

with open('file.csv') as my_csv_file: # the 'r' mode is implicit 
    reader = csv.reader(my_csv_file) 
    for row in reader: # this line shouldn't have been indented 
     print(row) 

Zusätzlich wird die #!/usr/bin/python wird das Skript mit Python 2, nicht Python 3. Ihr System eine sehr alte Version von Python 2 (2.4 oder früheren) kann ausgeführt werden, die nicht die with erkennt Kontextmanager. Wenn Sie müssen einen Shebang haben, machen Sie es #!/usr/bin/env python3.5 oder etwas ähnliches. Oder, wenn Sie nicht planen, das Skript als ausführbar zu setzen und es als ./scriptname.py oder was auch immer laufen zu lassen, werden Sie es ganz los.

Noch eine Sache - nennen Sie nicht Ihre Datei csv.py, da dies mit dem csv Modul kollidieren wird. Vermeiden Sie die Benennung von Dateien nach beliebigen Modulen auf Ihrem System. csv_test.py wäre zum Beispiel eine bessere Alternative.

+0

gab es zwei Fehler: Der Shebang zeigte fälschlicherweise auf die alte Version von Python (2.x). Aber interessanter ist, dass der Name der Datei selbst den Fehler verursacht hat. Nachdem ich die Datei von csv.py in "csv_test.py" umbenannt hatte, funktionierte sie wie erwartet. abgeschlossen $ ./csv.py Traceback (letzter Aufruf zuletzt): Datei "./csv.py", Zeile 3, in Import CSV Datei "CSV.py“, Zeile 6, in reader = csv.reader (my_csv_file) Attribute: module 'CSV' hat kein Attribut 'Leser' $ mv csv.py ./csv_test.py $ ./csv_test.py [ 'Vorname_Teilname'] – oradbanj

Verwandte Themen