[PYTHON] Was tun, wenn Sie sich mit FileNotFoundError in der Dateireferenz verlieren?

Einführung

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

Diesmal schlechte Situation

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'

Fehlerursache

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.

Gegenmaßnahme (1): Zunächst einmal, wo rennst du jetzt? Verstehe und beruhige dich wieder

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

Aktion (2): Geben Sie einen geeigneten Pfad an, damit auf die Datei verwiesen werden kann.

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

Extra: Verwenden Sie die assert-Anweisung

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.

abschließend

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 ~

Recommended Posts

Was tun, wenn Sie sich mit FileNotFoundError in der Dateireferenz verlieren?
Was tun, wenn Overalls "Abdeckung unbekannt" werden?
Was tun, wenn in Python minus Null angezeigt wird?
Was tun, wenn bei der Pip-Installation ein Unicode-Dekodierungsfehler auftritt?
Was tun, wenn Sie sich über TensorFlow v2 ohne Attribut 'app' ärgern?
Was tun, wenn TypeError in min und max von numpy auftritt?
Was tun, wenn Sie nicht mit pip in einer Babun-Umgebung installieren können?
Was tun, wenn Sie URL 443 mit pip nicht abrufen konnten?
Was tun, wenn auf pipenv der Fehler "Keine Versionen gefunden" angezeigt wird?
Swapon fehlgeschlagen: Was tun, wenn Sie sich über eine Operation ärgern, die nicht zulässig ist?
Was tun, wenn bei der Installation von Python mit pyenv eine Fehlermeldung angezeigt wird?
Was tun, wenn "Python nicht konfiguriert" angezeigt wird? Verwenden von PyDev in Eclipse
Was tun, wenn Sie sich über "Wertefehler: unbekannt lokal: UTF-8" in python manage.py syncdb ärgern?
Was tun, wenn Sie keine Dateien mit Indizes sortieren können?
Was tun, wenn Sie sich nicht als root anmelden können?
Was tun, wenn bei der Installation von Python 2 mit pyenv ein OpenSSL-Fehler auftritt?
Was tun, wenn in Hydrogen "Kein Kernel für Sprachpython gefunden" angezeigt wird?
Was tun, wenn in pycurl (einer von ihnen) "(35, 'SSL-Verbindungsfehler')" angezeigt wird?
Was tun, wenn beim Importieren von matplotlib in Python (Mac) eine Fehlermeldung angezeigt wird?
Was tun, wenn beim Importieren von matplotlib mit Jupyter ein Importfehler auftritt?
Was tun, wenn Sie Python auf IntelliJ ausführen und mit einem Fehler beenden?
Was tun, wenn Sie pyaudio nicht mit pip #Python installieren können?
Was tun, wenn Sie mit Maven kein Projekt erstellen können?
Was tun, wenn Sie den Papierkorb in Lubuntu 18.04 nicht verwenden können?
Was tun, wenn Swagger-Codegen mit Python und Importfehler ausgeführt wird? Es wird kein Modul mit dem Namen angezeigt
Was tun, wenn bei yum ein Metalink für Repository-Fehler nicht abgerufen werden kann?
Was tun, wenn beim Ausführen von "certbot erneuern" in der CakePHP-Umgebung eine Fehlermeldung angezeigt wird?
Was tun, wenn beim Versuch, pip mit pyenv zu verwenden, ein undefinierter Fehler angezeigt wird?
Was tun, wenn bei Do and Return in einem Golang-Test ein Fehler mit zu vielen Eingabeargumenten auftritt?
Was tun, wenn die Option -f von grep nicht funktioniert?
Was zu tun ist, wenn Sie sich über "Umkehrungen" ärgern, muss eine 2D-Liste sein ... im matplotlib-Pfeil
Was tun, wenn pipreqs zu UnicodeDecodeError führt?
Was tun, wenn PDO nicht in Laravel oder CakePHP gefunden wird?
Was tun, wenn Sie mit Python keine E-Mail an Yahoo senden konnten?
Was tun, wenn Sie die Rastersuche von sklearn in Python nicht verwenden können?
Was tun, wenn Sie während der Anaconda-Installation unter Linux nicht weiterkommen?
Was tun, wenn die Fehlermeldung angezeigt wird, dass der c-Compiler in configure keine ausführbaren Dateien erstellen kann?
Wenn Sie mehrere Statistiken mit groupby of pandas v1 erhalten möchten
Was tun, wenn beim Laden von mnist eine Fehlermeldung angezeigt wird?
Was tun, wenn beim Versuch, model.save mit Keras zu modellieren, der Fehler "get_config" überschrieben werden muss?
Was tun, um eine Google-Tabelle in Python zu erhalten?
Wenn Sie sich mit HTTP-Weiterleitungen 301 und 302 verlaufen
EC2 / Amazon Linux2: Was ist zu tun, wenn bei der Pip-Installation der Fehler "gcc 'kann nicht ausgeführt werden: Keine solche Datei oder kein solches Verzeichnis" auftritt
Was tun, wenn Sie sich über "Gtk * Backend erfordert die Installation von pygtke" ärgern, obwohl pygtk in matplotlib enthalten ist
Was tun, wenn bei Verwendung von Python mit der NetBeans-IDE die Warnung "Falsche Python-Plattform" angezeigt wird?
Was tun, wenn Sie mysqlclient nicht per Pip installieren können?
Kein Modul mit dem Namen Was tun, wenn Sie "libs.resources" erhalten?
ModuleNotFoundError: Kein Modul Was tun, wenn Sie'tensorflow.contrib 'erhalten?
Links, um mit Sublime Text zu tun, was Sie wollen
Was tun, wenn in pip ein Unicode-Dekodierungsfehler auftritt?
Was tun, wenn ein Fehler "unbekannter Dienst" vom gRPC-Server zurückgegeben wird?
Was tun, wenn beim Konvertieren von PySparkDataFrame in PandasDataFrame ein Speicherfehler auftritt?
Was tun, wenn Sortierimporte in der Python-Erweiterung von VSCode hängen bleiben (um 2020/09)?
Was tun, wenn bei Verwendung von ts-node-dev unter Linux der Fehler "ERR_FEATURE_UNAVAILABLE_ON_PLATFORM" angezeigt wird?
[AWS] Was tun, wenn Sie mit Lambda pfeifen möchten?
Was tun, wenn `Argumente [0] .scrollIntoView ();` in Python-Selen fehlschlägt?
Was tun, wenn pip in Homebrew einen DistributionError ausgibt?
Was tun, wenn in tf.train.start_queue_runners () ein 0xC0000005-Fehler auftritt?