Je suis nouveau à l'aide de Spyder 2.3.0 et Python 3.4.1Comment puis-je copier différents types de fichiers en Python tout en conservant leur structure de répertoires
J'ai une structure de répertoires avec des sous-répertoires.
Contrairement à d'autres exemples sur le Web, je souhaite sélectionner plusieurs types de fichiers et copier la structure du répertoire. J'ai essayé ci-dessous et cela fonctionne mais il ne prend qu'un seul type de fichier à la fois et "copytree
" (il va être très lent).
Existe-t-il un moyen ou une façon différente de rationaliser ce processus pour le rendre plus rapide?
Ce que je pensais que je voulais faire était:
Faire une liste complète des types de fichiers et les emplacements (marche à travers la structure de répertoire)
Par exemple se terminant par
fileExt = [".txt", ".doc", ".docx", ".xls",".xlsx", ".ppt", ".pptx", ".m", ".xmcd", ".pdf " ]
Puis, avec cette liste simplement "shutil.copytree
"
Tout conseil grandement apprécié.
srcDir = 'c:/a/src/dir/'
dirName = 'c:/a/dest/dir/'
import os
import shutil
##################################################################################
dstDir = os.path.abspath(dirName)
def ignore_list(path, files):
filesToIgnore = []
for fileName in files:
fullFileName = os.path.join(os.path.normpath(path), fileName)
if not os.path.isdir(fullFileName) and not fileName.endswith('.txt') :
filesToIgnore.append(fileName)
return filesToIgnore
# start of script
shutil.copytree(srcDir, dstDir, ignore=ignore_list)
####################################################################################################################################################################
dstDir = os.path.abspath(dirName)
def ignore_list(path, files):
filesToIgnore = []
for fileName in files:
fullFileName = os.path.join(os.path.normpath(path), fileName)
if not os.path.isdir(fullFileName) and not fileName.endswith('.docx') :
filesToIgnore.append(fileName)
return filesToIgnore
# start of script
shutil.copytree(srcDir, dstDir, ignore=ignore_list)
####################################################
Copiez et collez le changement « endswith ('docx.): »
peut-être aide fnmatch. S'il vous plaît regardez ici: https://docs.python.org/2/library/fnmatch.html – Humbalan