la version 2.6 de python TypeError: le fait de contraindre à Unicode: besoin de chaîne ou de tampon, liste des
Je ne comprends pas la raison de cette erreur TypeError
script:
import os
import shutil
src1 = os.listdir("/usr/dir1")
dst1 = os.listdir("/usr/dir2")
for file in src1:
if file not in dst1:
shutil.copy(file, dst1)
Erreur:
File "/scripts/trans_dir_balancing.py", line 14, in <module>
shutil.copy(file, dst1)
File "/usr/lib64/python2.6/shutil.py", line 82, in copy
if os.path.isdir(dst):
File "/usr/lib64/python2.6/genericpath.py", line 41, in isdir
st = os.stat(s)
TypeError: coercing to Unicode: need string or buffer, list found
Merci pour l'aide
Vous devez vous connecter pour publier un commentaire.
parce que dst1 dans votre code n'est pas de chemin, c'est une liste de chemins d'accès. Il convient de chemin (string), veuillez jeter un coup d'oeil sur le shutil.copier() et aussi sur le os.listdir().
En supposant que vous essayez de copier des fichiers d'un dossier à un autre, vous avez juste besoin de spécifier le répertoire de destination en tant que deuxième argument en shuti.copie.
IOError: [Errno 21]
si dir est trouvé dans le répertoire source, c'est pourquoi uneif os.path.isfile(file):
est nécessaire. Il peut aussi utile de mentionner que l'OP est remplacer la builtinfile
objet et la variable doit être renommé.if file not in os.listdir(dst)
vous êtes en supposant que la cible nom de fichier ne peut être créé dans le répertoire cible avant l'appel suivant àshutil.copy
, ce qui n'est généralement pas vrai. Depuisshutil.copy
écrase les fichiers existants, c'est dangereux. Vous devriez envisager d'utiliser une API différente qui n'a pas l'écraser, et ignorer l'existence de vérifier en faveur d'unetry/except
bloc pour gérer le remplacer condition.Je sais que ce post est vieux et daté. Cependant, j'ai trouvé ça drôle qu'mois plus tard, je suis en train de travailler sur un projet similaire. Je travaille sur un programme pour sauvegarder mon répertoire home.
C'est la façon dont je l'ai fait.
Maintenant, j'ai besoin d'un moyen de vérifier la compression natif. J'ai considéré en utilisant zip, mais cela nécessiterait que je change le code que j'ai jusqu'à présent. Je vais probablement juste pour avoir le programme de test pour voir si ce système d'exploitation est utilisé, puis il suffit d'utiliser les systèmes d'exploitation commandes pour compresser le fichier.