Bonjour,

Je me présente, Thomas, je suis technicien informatique. Chaque jour, nous recevons un certain nombre de fichiers (traces) que nous devons sauvegarder dans un dossier puis mettre en partage dans un autre.

Je me suis donc dit qu'un petit script en Python pourrait automatiser tout sa et me permettrais de démarrer mon apprentissage.

Voici le code fonctionnel ou je suis arrivé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
#!/usr/bin/python
# -*- coding: latin-1 -* 
 
### Importation des modules nécessaires ###
 
import os
import glob
import datetime
import shutil
 
### Récupération date j-1 et formatage ###
 
date_nametrace = (datetime.date.today()-datetime.timedelta(1)).strftime('%Y-%m-%d') # date à J-1 et formatage pour le nom des fichiers #
name_file = '*_{0}.zip'.format(date_nametrace) # création du nom des fichiers #
today_year = datetime.date.today().strftime('%Y') # Pour nom du dossier (année) #
today_yearmonth = (datetime.date.today()-datetime.timedelta(1)).strftime('%Y-%m') # Pour nom du dossier (année + mois) #
today_daymonthyear = (datetime.date.today()-datetime.timedelta(1)).strftime('%d-%m-%Y') # Pour nom du dossier (jours + année + mois) #
 
### Définition répertoire source et arrivé N2C ###
 
source_n2c = os.path.join("*******","N2","N2C") 
dest_n2c = os.path.join("*******","N2","N2C",today_year,today_yearmonth,today_daymonthyear)
dest_n2c_partage = os.path.join("*****","N2",today_yearmonth,today_daymonthyear)
 
### Transfert traces N2C ###
 
if os.path.isdir(source_n2c): # Vérification de l'existance du dossier #
		os.chdir(source_n2c) # Placement dans le bon dossier #
		print('Nous sommes dans : {0}'.format(os.getcwd())) # Indique le dossier dans lequel nous sommes #
		list_trace_n2c = glob.glob(name_file) # Enregistrement des fichiers dans une liste pour opération #
		print('Nombre de traces : ', len(list_trace_n2c))
		for x in list_trace_n2c: 
			if os.path.isfile(x): # Si fichier exist #
				shutil.copy(x, dest_n2c) # Copi de celui ci dans le dossier sur le ******** #
				shutil.move(x, dest_n2c_partage) # Cut de celui ci dans le dossier de partage #
				print('Le fichier {0} à été transféré'.format(x))
			else:
				print('Il n\'y a pas de fichier trace')
else:
	print('Ce dossier n\'existe pas')
 
### Définition répertoire source et arrivé N2M ###	
 
source_n2m = os.path.join("************","N2","N2M")
dest_n2m = os.path.join("*************","N2","N2M",today_year,today_yearmonth,today_daymonthyear)
dest_n2m_partage = os.path.join("***********","N2M",today_yearmonth,today_daymonthyear)
 
### Transfert traces N2M ###
 
if os.path.isdir(source_n2m):
	os.chdir(source_n2m)
	print('Nous sommes dans : {0}'.format(os.getcwd()))
	list_trace_n2m = glob.glob(name_file)
	print('Nombre de traces : ', len(list_trace_n2m))
	for x in list_trace_n2m:
		if os.path.isfile(x):
			shutil.copy(x, dest_n2m)
			shutil.move(x, dest_n2m_partage)
			print('Le fichier {0} à été transféré'.format(x))
		else:
			print('Il n\'y a pas de fichier trace')
else:
	print('Ce dossier n\'existe pas')
Je voudrais donc avoir vos avis sur ce code ? Y'a t'il des portions améliorable ? Des techniques plus pratique que celle employé ?

Enfin, j'aimerais tester la copie des fichiers, savoir si le shutil.copy et .move ont bien fonctionné, auriez vous des indications sur comment procéder ? J'ai pensé à lui faire faire un glob.glob du dossier cible et de compter le nombre de fichier (car on en as normalement toujours le même nombre) et de comparé les deux listes par exemple.

Egalement, j'aimerais ajouter un petit fichier log ou il écrit le résultat, qu'elle fichier on été copier etc ... Qu'elle est la méthode pour faire, ouvrir le fichier.log avant, puis lui demandé d'écrire dedans dans la boucle if de copie des fichier ?

Cordialement,
Thomas.