0
votes

Copiez tous les fichiers qui commencent par le même nom dans un répertoire différent en python

Mon répertoire ressemble à celui ci-dessous avec quelques fichiers.

Annuaire --111_file.txt --222_file.txt --111_file2.txt --222_sample.txt

Je souhaite copier tous les fichiers commençant par 111 dans un répertoire séparé et 222 dans un répertoire différent. Je ne sais pas comment parcourir le répertoire et trouver des fichiers qui commencent par le même nom.


1 commentaires

Ce n'est pas toujours 111 ou 222, il peut avoir n'importe quel nombre de chemins de fichiers différents. Il doit traverser tout le répertoire et copier les fichiers qui commencent par le même nom dans un dossier. De plus, je ne connais pas le nom du fichier, je sais juste qu'il commence par un numéro.


3 Réponses :


0
votes

Le script bash suivant copie tous les fichiers avec une correspondance de modèle:

cp 111* dir1;
cp 222* dir2;


0 commentaires

0
votes

Si vous souhaitez implémenter cela dans un programme utilisant Python, vous pouvez utiliser le shutil module, par exemple:

import os
import re
from glob import glob

# Source path 
source = '/Users/path/to/source'

files = glob(source + '/**', recursive=True) # '/**' and recurvise=True allow to search in subdirectories
files_to_move = [f for f in files if re.match('^\d', os.path.split(f)[1])] # '^\d' searchs for every files which start with a digit

Pour rechercher des fichiers avec une condition dans le répertoire et les sous-répertoires de manière récursive, vous pouvez utiliser le couplage glob à re :

# importing shutil module  
import shutil  
  
# Source path  
source = '/Users/path/to/source'
  
# Destination path  
destination = '/Users/path/to/destination'
  
# Move the content of source to destination  
dest = shutil.move(source, destination)  


1 commentaires

Veuillez vérifier le commentaire



0
votes

Hé en python, vous pouvez utiliser shutil lib.

Par exemple:

import shutil
import os

prefix_1 = '111'
prefix_2 = '222'

curr_working_dir = os.getcwd()

target1 = 'traget_path_1'
target2 = 'target_path_2'

files = os.listdir() #Path which includes you source files

for file in files:
   if prefix_1 in file:
       shutil.copyfile(curr_working_dir+'/'+file,target_1)
   elif prefix_2 in file:
       shutil.copyfile(curr_working_dir+'/'+file,target_2)
   else:
      pass

Meilleures salutations


1 commentaires

Veuillez vérifier le commentaire.