Import von csv aus einem Unterverzeichnis in Python
Mein Projekt hat eine Reihe von csv-Dateien, die kann oder kann nicht aufgerufen werden, basierend auf Benutzereingaben. Ich möchte speichern Sie diese Dateien in ein Unterverzeichnis, um meine Projekt-Ordner aufgeräumt. Ich bin völlig verwirrt, wie Sie dies tun. Die meisten Ressourcen, die ich ausgegraben habe beinhalten importieren Sie ein Modul oder ein Paket aus einem Unterverzeichnis eher als eine einfache Daten-Datei.
Die Codezeile, die Einfuhren meine csv derzeit aussieht:
target_doc = csv.reader(open('sample.csv', 'rU'), delimiter=",", quotechar='|')
Ich gehe davon aus, dass eine Lösung einzubeziehen, die Einrichtung eines path-variable mit import os und import sys, und vielleicht Aufspaltung dieser Linie mehrere Teile?
InformationsquelleAutor acpigeon | 2012-04-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Dateien öffnen, indem Sie Datei-Pfad. Verwenden Sie einfach
open('/path/to/file')
.Import ist nur erforderlich für Module und Pakete - Python-source-code.
Nur die echten Noten sind hier zu verwenden
os.Pfad.join()
, wo das verbinden von Pfaden für eine gute Kompatibilität mit verschiedenen Betriebssystemen und Dateisystemen. Der rest deros.path
Modul ist auch einen Blick Wert, wo Dateien beteiligt sind. Eine weitere häufige Falle mit windows-Pfade ist, dass mit Backslash-escape-Zeichen, so müssen Sie escape Ihre umgekehrte Schrägstriche ("some\\file"
) - eine hässliche option, raw-strings (r"some\file"
), Schrägstriche (Python wird eigentlich verarbeitet das automatisch) oder - die beste option, übergeben Sie Ihr Weg als pro-Argumente zu der oben genanntenos.path.join()
.Es ist vielleicht auch erwähnenswert, dass die Verwendung die
mit
- Anweisung würde verbessern Sie Ihre code.e.g:
Mit
with
sichert Ihre Datei wird geschlossen - auch wenn Ausnahmen auftreten.Die Implementierung der with-Anweisung bewirkt, dass ein I/O Fehler, wenn ich versuche zu schreiben, die Datei in ein array: für die Zeile in target_doc: target_list.erweitern(Zeile)
er iteriert über die Datei, wie Sie es verwenden - Sie müssen also keine Aussagen, die es verwenden, um innerhalb der
with
- block, sonst wird die Datei geschlossen werden. Hinweis: Sie erreichen könnten, was Sie zu tun versuchen es, indem Sie das tunlist(csv.reader(...))
(das gleiche gilt für jede iterator-Sie möchten, machen Sie eine Liste, aus, und, wenn Sie wollen, machen Sie eine Liste, während geringfügige änderungen oder filtern es, check out Liste Verstehens).Tatsächlich, ich misspeak, wenn Sie mit
extend()
, dann müssten Sieitertools.chain.from_iterable()
das gleiche Ergebnis zu erhalten, obwohl normalerweise beim Lesen aus einer CSV-Datei, dies ist weniger nützlich, als eine Liste von Listen.Funktioniert perfekt, vielen Dank für die Hilfe. Ich bin mit append() in diesem Fall aber gut zu beachten.
InformationsquelleAutor Gareth Latty
Sind Sie auf dem falschen Weg. Python-Pfad und import sind nur für die "Verlinkung" zu anderen python-code in Ihrem system. Andere Dateien als Ressourcen von Ihrem system zugegriffen wird, durch Angabe des vollständigen Pfad der Datei:
oder einen relativen Pfad, von wo aus Sie die python-Datei:
InformationsquelleAutor Larry Lustig
Können Sie
Und dann mit os.Pfad.join(cwd, "einige/../path') zu konstruieren, die absolute Pfade zu jedem Ort, die Sie mögen, so dass Ihre Pfade sind nur relativ zu Ihrem Skript Lage, unabhängig von den aktuellen Arbeitsverzeichnis für python-Interpret.
Mai auch os.sep wenn Sie nicht wollen, zu hängen, unix '/'-convention.
Sie könnten Recht haben, ich denke, ich habe nicht genau die Frage.
InformationsquelleAutor Mihnea Simian
Warum gehst du nicht einfach verwenden :
path_in = '/directory_whatever_it_is/sample_data.csv'
sample_data = pd.read_csv(path_in)
InformationsquelleAutor Cagdas Kanar