Je suis nouveau sur python et le codage en général. J'essaie de lire à partir d'un fichier texte qui a des noms de chemin sur chaque ligne. Je voudrais lire le fichier texte ligne par ligne et diviser le chaînes de lignes en lecteur, chemin et nom de fichier.
Voici mon code jusqu'à présent:
import os,sys, arcpy
## Open the file with read only permit
f = open('C:/Users/visc/scratch/scratch_child/test.txt')
for line in f:
(drive,path,file) = os.path.split(line)
print line.strip()
#arcpy.AddMessage (line.strip())
print('Drive is %s Path is %s and file is %s' % (drive, path, file))
J'obtiens l'erreur suivante:
File "C:/Users/visc/scratch/simple.py", line 14, in <module>
(drive,path,file) = os.path.split(line)
ValueError: need more than 2 values to unpack
Je ne reçois pas cette erreur lorsque je souhaite uniquement le chemin et le nom de fichier.
Vous devez utiliser os.path.splitdrive
première:
with open('C:/Users/visc/scratch/scratch_child/test.txt') as f:
for line in f:
drive, path = os.path.splitdrive(line)
path, filename = os.path.split(path)
print('Drive is %s Path is %s and file is %s' % (drive, path, filename))
Remarques:
with
s'assure que le fichier est fermé à la fin du bloc (les fichiers sont également fermés lorsque le garbage collector les mange, mais l'utilisation de with
est généralement une bonne pratiquefile
est le nom d'une classe dans l'espace de noms standard et vous ne devriez probablement pas l'écraser :)Vous pouvez utiliser os.path.splitdrive () pour obtenir le lecteur, puis path.split () le reste.
## Open the file with read only permit
f = open('C:/Users/visc/scratch/scratch_child/test.txt')
for line in f:
(drive, path) = os.path.splitdrive(line)
(path, file) = os.path.split(path)
print line.strip()
print('Drive is %s Path is %s and file is %s' % (drive, path, file))