Beim Spielen mit Beispielcode in Python Fast 100% der Datei lesen Schlechte Situation, in der "Datei nicht gefundener Fehler" auftritt.
Ich dachte, der Grund, warum ich nicht für immer gewachsen bin, war, dass ich mein Spiegelbild nicht aufgezeichnet habe. Führen Sie ein Protokoll
Ursprünglich gab es auch Sicherheitsprobleme Es ist peinlich, Leuten meine unordentliche Ordnerstruktur zu zeigen Um zu verhindern, dass in Zukunft dasselbe passiert Ich werde nicht einmal eine Hose tragen, also werde ich sie so lassen, wie sie ist.
Dateiorganisation
C:\Users\watya\protos>
├─kagglebook-master
│ ├─ch01
│ │ └─ch01-01-titanic.py
│ ├ ・ ・ ・
│ ├─input
│ │ └─ch01-titanic
│ │ ├─gender_submission.csv
│ │ ├─test.csv
│ │ └─train.csv
… …
Befehl ausgeführt
C:\Users\watya\protos> & C:/Users/watya/Anaconda3/python.exe c:/Users/watya/protos/kagglebook-master/ch01/ch01-01-titanic.py
Ausgeführtes Programm (nur am Anfang)
import numpy as np
import pandas as pd
# -----------------------------------
#Trainingsdaten und Testdaten lesen
# -----------------------------------
#Trainingsdaten und Testdaten lesen
train = pd.read_csv('../input/ch01-titanic/train.csv')
test = pd.read_csv('../input/ch01-titanic/test.csv')
Fehler, der aufgetreten ist
FileNotFoundError: [Errno 2] File b'../input/ch01-titanic/train.csv' does not exist: b'../input/ch01-titanic/train.csv'
Sie können es sehen, indem Sie auf [Ausgeführter Befehl] schauen Tatsächlich C:\Users\watya\protos Obwohl es läuft c:/Users/watya/protos/kagglebook-master/ch01/ Weil Sie "missverstehen", was Sie tun FileNotFoundError Es passiert.
Aufgrund dieses "Missverständnisses" halte ich es für gut, wenn wir eine ruhige Antwort geben könnten, um einen geeigneten Weg anzugeben.
Referenz: https://note.nkmk.me/python-os-getcwd-chdir/
Aktuelles Verzeichnis abrufen / überprüfen: Verwenden Sie os.getcwd ()
Sie sollten es so verwenden
Ausführungsdatei
import numpy as np
import pandas as pd
import os
print("Aktueller Standort:{}".format(os.getcwd()))← Hier einfügen
# -----------------------------------
#Trainingsdaten und Testdaten lesen
# -----------------------------------
#Trainingsdaten und Testdaten lesen
train = pd.read_csv('../input/ch01-titanic/train.csv')
test = pd.read_csv('../input/ch01-titanic/test.csv')
Ausführungsergebnis
PS C:\Users\watya\protos> & C:/Users/watya/Anaconda3/python.exe c:/Users/watya/protos/kagglebook-master/ch01/ch01-01-titanic.py
Aktueller Standort:C:\Users\watya\protos ←pd.read_csv()Sehen Sie, wo auf die Datei verwiesen wurde
Traceback (most recent call last):
・ ・ ・
FileNotFoundError: [Errno 2] File b'../input/ch01-titanic/train.csv' does not exist: b'../input/ch01-titanic/train.csv'
Im schlimmsten Fall kann damit Panik vermieden werden. Wenn Sie Ihren aktuellen Standort kennen, können Sie die Richtung der Lösung sehen, weil Sie verstehen können, dass "ich sehe, es ist nicht gut, weil Sie von einem völlig anderen Ort aus verweisen".
Ich denke, es gibt verschiedene Möglichkeiten, also habe ich alle geschrieben, die mir in den Sinn gekommen sind (ich denke, es gibt mehr ...) ① Machen Sie das Argument von read_csv () zu einem absoluten Pfad anstelle eines relativen Pfads. (2) Verschieben Sie den Ausführungspfad vor der Ausführung in die Ausführungsdatei. Mit anderen Worten C:\Users\watya\protos> nicht C:\Users\watya\protos/kagglebook-master/ch01/> Laufen Sie weiter ③ Verwenden Sie os.chdir (), um das Ausführungsverzeichnis nach der Ausführung zu verschieben und darauf zu verweisen.
Alles ist in Ordnung, aber ich persönlich hatte keinen Stolz Ich möchte vermeiden, mit dem Code wie ① herumzuspielen, weil ich oft den Code round pakuri verwende. Ich persönlich füge es gerne in ③ hinzu.
Wenn Sie sich nicht mit dem Code herumschlagen müssen, ist ② am schönsten, weil Sie den Code nicht am meisten berühren. Wenn Sie viel Vergesslichkeit haben, werden Sie oft verloren gehen, wenn Sie hier überspringen. Ich denke, dass ③ für die Persönlichkeit geeignet ist.
Als ich alles neu geschrieben habe, habe ich geschrieben, was mit dem Code von ①② passiert ist.
Ausführungsdatei (im Fall von ①)
import numpy as np
import pandas as pd
# -----------------------------------
#Trainingsdaten und Testdaten lesen
# -----------------------------------
#Trainingsdaten und Testdaten lesen
train = pd.read_csv('c:/Users/watya/protos/kagglebook-master/input/ch01-titanic/train.csv')← Hier umgeschrieben
test = pd.read_csv('c:/Users/watya/protos/kagglebook-master/input/ch01-titanic/test.csv')← Hier umgeschrieben
Ausführungsdatei (im Fall von ③)
import numpy as np
import pandas as pd
import os
os.chdir('kagglebook-master/ch01/')← Hier einfügen
# -----------------------------------
#Trainingsdaten und Testdaten lesen
# -----------------------------------
#Trainingsdaten und Testdaten lesen
train = pd.read_csv('../input/ch01-titanic/train.csv')
test = pd.read_csv('../input/ch01-titanic/test.csv')
Diesmal ist es eine Dateireferenz. Was tun, wenn Sie sich verlaufen? Es ist ein bisschen vom Thema entfernt, aber os.getcwd () ist nur eine offensichtliche Möglichkeit, es in einem Debug zu verwenden. Normalerweise frage ich mich, wie es ist, Code zu schreiben, der einen solchen FileNotFoundError ausspuckt ... Schreiben Sie auch auf, wie Sie den Fehler mit der assert-Anweisung abfangen können.
Ausführungsdatei
import numpy as np
import pandas as pd
import os
#Überprüfung der Existenz von CSV-Dateien
assert os.path.isfile('../input/ch01-titanic/train.csv'), 'train.Es gibt keine CSV'
assert os.path.isfile('../input/ch01-titanic/test.csv'), 'test.Es gibt keine CSV'
# -----------------------------------
#Trainingsdaten und Testdaten lesen
# -----------------------------------
#Trainingsdaten und Testdaten lesen
train = pd.read_csv('../input/ch01-titanic/train.csv')
test = pd.read_csv('../input/ch01-titanic/test.csv')
Ausführungsergebnis
PS C:\Users\watya\protos> & C:/Users/watya/Anaconda3/python.exe c:/Users/watya/protos/kagglebook-master/ch01/ch01-01-titanic.py
Traceback (most recent call last):
File "c:/Users/watya/protos/kagglebook-master/ch01/ch01-01-titanic.py", line 9, in <module>
assert os.path.isfile('../input/ch01-titanic/train.csv'), 'train.Es gibt keine CSV'
AssertionError: train.Es gibt keine CSV
PS C:\Users\watya\protos>
Es fühlt sich sehr erfrischend an. Warum gibt es allein damit doch keine Datei? Es ist keine Lösung, aber es spuckt vorerst keinen wilden FileNotFoundError aus.
Ich dachte, ich schreibe einen Artikel auf niedriger Ebene ... Ich denke, es ist besser zu akzeptieren, dass dies das aktuelle Niveau ist.
Auch wenn ich nur das schreibe, erinnere ich mich an mich selbst und selbst wenn ich es wieder vergesse Wenn Sie in Qiita nach "File Not Found Error" suchen, wird Ihr Artikel abgefangen. Das ist schon sicher!
~ Ende ~