Lors de la lecture avec un exemple de code en python Presque 100% de la lecture du fichier Mauvaise situation où "Erreur de fichier introuvable" se produit.
Je pensais que la raison pour laquelle je n'avais pas grandi pour toujours était parce que je n'avais pas enregistré ma réflexion. Tenir un registre
À l'origine, il y aurait également des problèmes de sécurité C'est embarrassant de montrer ma structure de dossiers en désordre aux gens Pour éviter que la même chose ne se reproduise à l'avenir Je ne porterai même pas un seul pantalon, donc je le garderai tel quel.
organisation des fichiers
C:\Users\watya\protos>
├─kagglebook-master
│ ├─ch01
│ │ └─ch01-01-titanic.py
│ ├─ ・ ・ ・
│ ├─input
│ │ └─ch01-titanic
│ │ ├─gender_submission.csv
│ │ ├─test.csv
│ │ └─train.csv
… …
Commande exécutée
C:\Users\watya\protos> & C:/Users/watya/Anaconda3/python.exe c:/Users/watya/protos/kagglebook-master/ch01/ch01-01-titanic.py
Programme exécuté (uniquement au début)
import numpy as np
import pandas as pd
# -----------------------------------
#Lecture des données d'entraînement et des données de test
# -----------------------------------
#Lecture des données d'entraînement et des données de test
train = pd.read_csv('../input/ch01-titanic/train.csv')
test = pd.read_csv('../input/ch01-titanic/test.csv')
Erreur survenue
FileNotFoundError: [Errno 2] File b'../input/ch01-titanic/train.csv' does not exist: b'../input/ch01-titanic/train.csv'
Vous pouvez le voir en regardant [Commande exécutée] Réellement C:\Users\watya\protos Même si ça marche c:/Users/watya/protos/kagglebook-master/ch01/ Parce que vous vous «méprenez» sur ce que vous faites FileNotFoundError Est passe.
Sur la base de ce "malentendu", je pense qu'il serait bon que nous puissions prendre une réponse calme afin que nous puissions spécifier un chemin approprié.
Référence: https://note.nkmk.me/python-os-getcwd-chdir/
Obtenir / vérifier le répertoire actuel: utilisez os.getcwd ()
Vous devriez l'utiliser comme ça
Dossier d'exécution
import numpy as np
import pandas as pd
import os
print("Localisation actuelle:{}".format(os.getcwd()))← Insérez ici
# -----------------------------------
#Lecture des données d'entraînement et des données de test
# -----------------------------------
#Lecture des données d'entraînement et des données de test
train = pd.read_csv('../input/ch01-titanic/train.csv')
test = pd.read_csv('../input/ch01-titanic/test.csv')
Résultat d'exécution
PS C:\Users\watya\protos> & C:/Users/watya/Anaconda3/python.exe c:/Users/watya/protos/kagglebook-master/ch01/ch01-01-titanic.py
Localisation actuelle:C:\Users\watya\protos ←pd.read_csv()Voir où le fichier a été référencé
Traceback (most recent call last):
・ ・ ・
FileNotFoundError: [Errno 2] File b'../input/ch01-titanic/train.csv' does not exist: b'../input/ch01-titanic/train.csv'
Au pire, la panique peut être évitée avec cela. Si vous connaissez votre emplacement actuel, vous pouvez voir la direction de la solution parce que vous pouvez comprendre que "je vois, ce n'est pas bon parce que vous faites référence d'un endroit complètement différent."
Je pense qu'il y a plusieurs façons de le faire, alors j'ai écrit toutes celles qui me sont venues à l'esprit (je pense qu'il y en a plus ...) ① Faites de l'argument de read_csv () un chemin absolu au lieu d'un chemin relatif. (2) Déplacez le chemin d'exécution vers le fichier d'exécution avant l'exécution. En d'autres termes C:\Users\watya\protos> ne pas C:\Users\watya\protos/kagglebook-master/ch01/> Courir ③ Utilisez os.chdir () pour déplacer le répertoire d'exécution après l'exécution et y faire référence.
Tout va bien, mais personnellement je n'avais aucune fierté Je veux éviter de jouer avec le code comme ① parce que j'utilise souvent le code autour de pakuri. J'aime personnellement l'ajouter dans ③.
Si vous n'avez pas à vous soucier du code, ② est le plus beau car vous ne touchez pas le plus au code. Si vous avez beaucoup d'oubli, vous vous perdrez souvent en sautant ici. Je pense que ③ convient à la personnalité.
Quand j'ai tout écrit, j'ai écrit ce qui est arrivé au code de ①②.
Dossier d'exécution (en cas de ①)
import numpy as np
import pandas as pd
# -----------------------------------
#Lecture des données d'entraînement et des données de test
# -----------------------------------
#Lecture des données d'entraînement et des données de test
train = pd.read_csv('c:/Users/watya/protos/kagglebook-master/input/ch01-titanic/train.csv')← Réécrit ici
test = pd.read_csv('c:/Users/watya/protos/kagglebook-master/input/ch01-titanic/test.csv')← Réécrit ici
Dossier d'exécution (en cas de ③)
import numpy as np
import pandas as pd
import os
os.chdir('kagglebook-master/ch01/')← Insérez ici
# -----------------------------------
#Lecture des données d'entraînement et des données de test
# -----------------------------------
#Lecture des données d'entraînement et des données de test
train = pd.read_csv('../input/ch01-titanic/train.csv')
test = pd.read_csv('../input/ch01-titanic/test.csv')
Cette fois, c'est une référence de fichier Que faire si vous vous perdez C'est un peu hors sujet, mais os.getcwd () est juste une façon flagrante de l'utiliser dans le débogage. Normalement, je me demande comment il est d'écrire du code qui crache un tel FileNotFoundError ... Notez également comment intercepter l'erreur avec l'instruction assert.
Dossier d'exécution
import numpy as np
import pandas as pd
import os
#vérification de l'existence du fichier csv
assert os.path.isfile('../input/ch01-titanic/train.csv'), 'train.Il n'y a pas de csv'
assert os.path.isfile('../input/ch01-titanic/test.csv'), 'test.Il n'y a pas de csv'
# -----------------------------------
#Lecture des données d'entraînement et des données de test
# -----------------------------------
#Lecture des données d'entraînement et des données de test
train = pd.read_csv('../input/ch01-titanic/train.csv')
test = pd.read_csv('../input/ch01-titanic/test.csv')
Résultat d'exécution
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.Il n'y a pas de csv'
AssertionError: train.Il n'y a pas de csv
PS C:\Users\watya\protos>
C'est très rafraîchissant. Cependant, avec cela seul, pourquoi n'y a-t-il pas de fichier après tout? Ce n'est pas une solution, mais cela ne crache pas une FileNotFoundError féroce pour le moment.
Je pensais que j'écrivais un article de bas niveau ... Je pense qu'il vaut mieux accepter que c'est le niveau actuel.
Aussi, si j'écris seulement ceci, je me souviens de moi, et même si je l'oublie encore Si vous recherchez «Erreur de fichier introuvable» dans Qiita, votre article sera capturé. C'est déjà sûr!
~ Fin ~
Recommended Posts