[PYTHON] nom de fichier. Il est normal d'avoir un espace demi-largeur dans pathlib, mais lorsque vous frappez avec un sous-processus, l'espace demi-largeur doit être échappé.

--Je veux charger csv.

Histoire du temps

import pathlib
import subprocess as sp

path_file = pathlib.Path('hoge hoge.csv')

encoding = sp.getoutput('nkf -g ' + str(path_file))
df = pd.read_csv(path_file, encoding=encoding)

Quoi qu'il en soit, il y a une erreur dans le sous-processus

import pathlib
import subprocess as sp

path_file = pathlib.Path('hoge\ hoge.csv')

encoding = sp.getoutput('nkf -g ' + str(path_file))
df = pd.read_csv(path_file, encoding=encoding)

(L'espace entre «hoge» et «hoge» est «\ ␣») Quoi qu'il en soit, il y a une erreur dans pd.read_csv

Fâché! !! !! !! !!

Résolu par un codage dur en colère (mais pas si difficile)

import pathlib
import subprocess as sp

path_file = pathlib.Path('hoge hoge.csv')

encoding = sp.getoutput('nkf -g ' + str(path_file).replace(' ', '\ ')))
df = pd.read_csv(path_file, encoding=encoding)

Je viens de remplacer par \ ␣.

ne peut pas pardonner…! Pourquoi y a-t-il un «␣» dans le nom du dossier que le système insère automatiquement? Je ... je veux effacer ␣, qui est confondu dans tous les noms de fichiers, avant ma naissance. Avec cette main, ␣, qui se confond avec tous les noms de fichiers de tous les univers, passés et futurs.


Postscript (01/06/2017 17:50) En référence au commentaire de @ shiracamus encoding = sp.check_output(['nkf', '-g', str(path_file)]) Si oui, cela a fonctionné.

Je ne peux pas faire la différence entre get output et check_output en lisant la documentation ... Je n'ai pas assez d'études.

Recommended Posts

nom de fichier. Il est normal d'avoir un espace demi-largeur dans pathlib, mais lorsque vous frappez avec un sous-processus, l'espace demi-largeur doit être échappé.
Si vous les gars dans la cuisine de portée pouvez le faire avec une marge ~ ♪
J'ai essayé de gratter YouTube, mais je peux utiliser l'API, alors ne le faites pas.
Que faire si vous avez corrigé l'erreur dans l'adresse IP du fichier de zone mais ne pouvez pas vous connecter au serveur DNS
Si vous ne le savez pas, c'est dangereux. Expliquez soigneusement comment utiliser la commande xargs
[Python] Lorsque vous souhaitez utiliser toutes les variables dans un autre fichier
Vérifiez si vous pouvez vous connecter à un port TCP en Python
Que faire si vous ne pouvez pas utiliser la poubelle dans Lubuntu 18.04.
Que faire si vous devez avoir défini une clé ssh mais qu'on vous demande un mot de passe
Que faire si vous obtenez l'erreur RuntimeError: Python n'est pas installé en tant que framework lorsque vous essayez d'utiliser matplitlib et pylab dans Python 3.3