2017-09-14 4 views
1

J'utilise python3 (python3.6.1 pour être spécifique) pour le codage.Impossible de lire un nom de fichier csv en utilisant des pandas lorsque le chemin est un argument de ligne de commande utilisant Python3

args = sys.argv 
    filename = args[1] 
    data = pd.read_csv(filename) 

Cependant, il est dit que le fichier n'existe pas même s'il existe. Je vois que le nom de fichier est encodé en octet avec un préfixe b devant.

J'ai également essayé le code suivant.

filename = StringIO(filename) 
    data = pd.read_csv(filename) 

Maintenant, il n'y a pas d'erreur. Mais, je vois un cadre de données vide avec des colonnes comme le nom du fichier.

J'ai exécuté le programme en utilisant la commande.

python id3.py /path/to/filename.csv 

Est-ce que quelqu'un pourrait m'aider avec ceci ou quelqu'un pourrait me diriger vers le lien qui a la réponse.

Editer: - Il y avait un problème dans le chemin. Le chemin du fichier csv a plusieurs espaces. Donc Ubuntu l'a remplacé '% 20' en raison de ce que python l'a lu comme chaîne de byte je suppose. Par conséquent, il n'a pas pu lire le fichier csv.

Lorsque j'ai supprimé les espaces dans le chemin. python pandas était capable de lire le fichier csv.

Merci

+0

Pouvez-vous mettre l'entrée dans la question – GiantsLoveDeathMetal

+0

qu'est-ce que 'print (nom de fichier)' sortie? – GiantsLoveDeathMetal

+0

La commande print donne /path/to/filename.csv Cependant, l'erreur affichée est FileNotFounderror: b '/ path/to/filename.csv' n'existe pas. – megamind

Répondre

0

Essayez "fichier/chemin/avec spaces.csv"

Donc, en utilisant des guillemets lorsque vous exécutez le script par exemple

python script.py "file/path/with spaces.csv"