Comment copier tous les fichiers d'un répertoire à un autre en python. J'ai le chemin source et le chemin de destination dans une chaîne.copier plusieurs fichiers en python
Répondre
Vous pouvez utiliser os.listdir() pour obtenir les fichiers dans le répertoire source, os.path.isfile() pour voir si elles sont des fichiers réguliers (y compris des liens symboliques sur les systèmes * nix) et shutil.copy faire la copie.
Le code suivant copie uniquement les fichiers ordinaires du répertoire source dans le répertoire de destination (je suppose que vous ne souhaitez pas que des sous-répertoires soient copiés).
import os
import shutil
src_files = os.listdir(src)
for file_name in src_files:
full_file_name = os.path.join(src, file_name)
if (os.path.isfile(full_file_name)):
shutil.copy(full_file_name, dest)
Si vous ne souhaitez pas copier l'intégralité de l'arborescence (avec des sous-répertoires, etc.), utilisez ou glob.glob("path/to/dir/*.*")
pour obtenir une liste de tous les noms de fichiers, bouclez sur la liste et utilisez shutil.copy
pour copier chaque fichier.
for filename in glob.glob(os.path.join(source_dir, '*.*')):
shutil.copy(filename, dest_dir)
Remarque: Vous devrez peut-être vérifier les résultats glob avec os.path.isfile() pour être sûr qu'ils sont des noms de fichiers. Voir aussi la réponse de GreenMatt. Alors que glob renvoie uniquement le nom de fichier comme os.listdir, il renvoie également les noms de répertoires. Le modèle '*. *' Peut suffire, tant que vous n'avez pas de noms de fichiers sans extension, ou de points dans les noms de répertoires. – Steven
import os
import shutil
os.chdir('C:\\') #Make sure you add your source and destination path below
dir_src = ("C:\\foooo\\")
dir_dst = ("C:\\toooo\\")
for filename in os.listdir(dir_src):
if filename.endswith('.txt'):
shutil.copy(dir_src + filename, dir_dst)
print(filename)
def recursive_copy_files(source_path, destination_path, override=False):
"""
Recursive copies files from source to destination directory.
:param source_path: source directory
:param destination_path: destination directory
:param override if True all files will be overridden otherwise skip if file exist
:return: count of copied files
"""
files_count = 0
if not os.path.exists(destination_path):
os.mkdir(destination_path)
items = glob.glob(source_path + '/*')
for item in items:
if os.path.isdir(item):
path = os.path.join(destination_path, item.split('/')[-1])
files_count += recursive_copy_files(source_path=item, destination_path=path, override=override)
else:
file = os.path.join(destination_path, item.split('/')[-1])
if not os.path.exists(file) or override:
shutil.copyfile(item, file)
files_count += 1
return files_count
Il pourrait aider à donner une explication verbale de votre code –
Je pense que vous voulez dire ** écraser **, pas ** déroger ** –
[Comment copier un répertoire entier de fichiers dans un répertoire existant en utilisant Python?] (Http://stackoverflow.com/questions/1868714/how-do-i-copy -an-whole-directory-of-files-into-a-existing-directory-using-pyth) –