9
votes

Déplacement de fichiers spécifiques dans des sous-répertoires dans un répertoire - Python

im plutôt nouveau à Python, mais je me suis présidé pour apprendre les bases.

De toute façon, j'ai plusieurs fichiers qu'une fois que j'ai extrait de leurs fichiers zip (processus douloureusement lent, BTW) produisent plusieurs centaines de sous-répertoires avec 2-3 fichiers avec 2-3 fichiers dans chaque. Maintenant, ce que je veux faire, c'est extraire tous ces fichiers se terminant par "dem.tif" et placez-les dans un fichier séparé (ne pas copier non copié).

J'ai peut-être tenté de sauter dans la partie profonde ici, mais Le code que j'ai écrit des courses sans erreur, il ne faut pas trouver les fichiers (qui existent!) car cela me donne la déclaration d'autre. Voici le code que j'ai créé xxx


0 commentaires

4 Réponses :


3
votes

Mise à jour: le questionneur a clarifié ci-dessous en dessous de ce qu'il appelle la fonction de déplacement, qui était le premier point de ma réponse.

Il y a quelques autres choses à considérer:

  • Vous avez l'ordre des éléments retournés dans chaque tuple à partir de os.walk mal, j'ai peur - vérifier le documentation pour cette fonction .
  • En supposant que vous avez réparé cela, gardez également à l'esprit que vous devez itérer sur fichiers , et vous devez os.join chacun de ceux à root , plutôt que src
  • Ce qui précède serait évident, je l'espère, si vous imprimez les valeurs renvoyées par os.walk et commentaire le reste du code dans cette boucle.
  • Avec le code qui effectue des opérations potentiellement destructrices comme le déplacement de fichiers, je serais toujours essayer d'abord un code qui imprime les quelques paramètres à shutil.move jusqu'à ce que vous êtes sûr que c'est juste.

3 commentaires

Salut Mark, merci pour votre réponse. Désolé mon anglais n'est probablement pas le meilleur ce que je voulais dire, c'est que je suis en train d'exécuter le programme dans la fenêtre de coquille en tapant le mouvement () et tout fonctionne ok sans la déclaration shuttilis.move mais dès que je l'ajoute que je reçois le Erreur suivante AttributeError: 'Liste' Object n'a aucun attribut 'Endswith'


@ user1041814: Cette erreur est dû aux premier et deuxième points que j'ai mentionnés ci-dessus - vos fichiers est en fait une liste des sous-répertoires dans chaque répertoire de la promenade.


Merci encore pour les suggestions! C'est parfois toujours la plus simple des erreurs comme pour obtenir l'ordre de la fonction OS.Walk qui vous obtient!



3
votes

Je pense que vous avez mélangé la façon dont vous devriez utiliser os.walk () . xxx


0 commentaires

8
votes

Premièrement, bienvenue dans la communauté et Python! Vous voudrez peut-être modifier votre nom d'utilisateur, surtout si vous fréquentez ici. :)

Je suggère ce qui suit (volé de M. Bezley ): xxx


0 commentaires

0
votes

Une raison particulière dont vous avez besoin de le faire à Python? Une simple commande shell ne sera-t-elle pas plus simple? Si vous êtes sur un système de type UNIX ou si vous avez accès à Cygwin sous Windows:

find src_dir -name "*dem.tif" -exec mv {} dst_dir


0 commentaires