2016-07-22 2 views
-1

Warum öffnet dies die Datei, lesen Sie sie, schließen Sie sie ohne Fehler. Der Fehler 'Dateiname' existiert nicht. Wie soll man bei jedem Einsatz des csv-Moduls die Eingabe eines Dateipfads vermeiden? Gibt es keine Möglichkeit, Skripts durch ein Verzeichnis für CSV-Dateien zu durchlaufen, ohne einen Dateipfad zu benötigen?CSV-Modul benötigt immer FilePath? Automatisierung?

data = open(filename, "r") 
d = data.readlines() 
data.close() 

Aber nicht das.

+2

... was? Wenn Sie auf eine Datei zugreifen müssen, müssen Sie deren Pfad kennen. Unabhängig davon, ob es sich um eine CSV-Datei handelt oder nicht. Könnten Sie Ihre Frage so bearbeiten, dass sie auch enthält, was Sie erreichen möchten? Vielleicht können wir dann helfen. –

+1

Wissen Sie, dass Einzug in Python wichtig ist? Verstehst du, was weiter bedeutet? Warum beschweren Sie sich über das CSV-Modul, wenn Sie es nicht einmal benutzen? Und übrigens, der Fehler, den Sie bekommen, hat nichts damit zu tun. – polku

Antwort

0

Aufgrund der Art der Dateiobjekte in Python muss immer der Pfad angegeben werden. Da der Pfad jedoch nur eine Zeichenfolge ist, können Sie immer ein Skript schreiben, um alle Dateien im aktuellen Verzeichnis zu finden (mit dem Modul os). Filtern Sie die Dateien mit der Erweiterung .csv, und fügen Sie sie in eine Liste ein. Hier ist ein Beispiel:

from os import listdir 
import csv 

# Get the list of all files/directories in current path 
all_files = listdir('.') 

# Filter out only the .csv files 
csv_files = [file for file in all_files if file.endswith('.csv')] 

print csv_files 

# Create file objects and csv objects for each CSV 
file_objects = [open(file) for file in csv_files] 
csv_readers = [csv.reader(csvfile) for csvfile in file_objects] 

# Do what you need to do with the data 

# Close file objects 
for file in file_objects: 
    file.close()