Bonsoir à tous,
Je suis nouveau en Python et j'ai beau essayer de comprendre par moi même en lisant tous les tutos FR et ENG mais la je donne ma langue au chat..
J'ai déjà effectué une recherche concernant ce problème mais aucun n'est exactement le même que le mien..
J'essaie de faire un petit script qui effectue diverses tâches toutes les X minutes, comme un planificateur de tâche en somme.
Je me doute que tout mon code est à améliorer mais j'aimerai juste comprendre se qu'il se passe ici comme erreur.
Voici la partie du code qui pose problème, ici tout se déroule néanmoins bien car j'ai enlevé la partie qui pose problème:
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 import time, os, psutil, sys class Schedule: def __init__(self, time_duree): self.time_start = time.time() self.time_duree = time_duree self.time_end = 0 self.time_compteur = 0 def start(self,): # (Ré)initialise le "Chronomètre" en fixant la valeur du temps absolu actuel dans self.time_start. self.time_start = time.time() self.time_compteur = 0 self.time_end = 0 def compare(self,): # Permet de connaître le temps écoulé depuis l'initialisation de la tâche. self.time_end = time.time() # Fixe la valeur du temps absolu actuel dans self.time_end. self.time_compteur = self.time_end - self.time_start # Fixe la valeur de la différence entre time_start et time_end. Schedule.start(Action_1) # Initialise le début du "Chronomètre" en appelant .startde la classe Schedule. Schedule.start(Action_2) Schedule.start(Action_3) Schedule.start(Action_4) Action_1 = Schedule(1200) # Initialise les objets de la classe Schedule. Action_2 = Schedule(120) Action_3 = Schedule(2400) Action_4 = Schedule(3600) def Action_1(): # C'est cette partie qui pose problème lorsque qu'elle est jointe à la routine qui contrôle si le processus est lancé. (voir code suivant) exists = False Schedule.compare(Action_1) if Action_1.time_compteur > Action_1.time_duree: # Quand self.compteur est plus grand que la durée fixée au début, retourner True. return True >>> test() True
Maintenant le code avec le message d'erreur:
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 import time, os, psutil, sys class Schedule: def __init__(self, time_duree): self.time_start = time.time() self.time_duree = time_duree self.time_end = 0 self.time_compteur = 0 def start(self,): # (Ré)initialise le "Chronomètre" en fixant la valeur du temps absolu actuel dans self.time_start. self.time_start = time.time() self.time_compteur = 0 self.time_end = 0 def compare(self,): # Permet de connaître le temps écoulé depuis l'initialisation de la tâche. self.time_end = time.time() # Fixe la valeur du temps absolu actuel dans self.time_end. self.time_compteur = self.time_end - self.time_start # Fixe la valeur de la différence entre time_start et time_end. Schedule.start(Action_1) # Initialise le début du "Chronomètre" en appelant .startde la classe Schedule. Schedule.start(Action_2) Schedule.start(Action_3) Schedule.start(Action_4) Action_1 = Schedule(1200) # Initialise les objets de la classe Schedule. Action_2 = Schedule(120) Action_3 = Schedule(2400) Action_4 = Schedule(3600) def Action_1(): # C'est cette partie qui pose problème lorsque qu'elle est jointe à la routine qui contrôle si le processus est lancé. exists = False Schedule.compare(Action_1) if Action_1.time_compteur > Action_1.time_duree: for p in psutil.process_iter(): # C'est cette partie qui est rajoutée et qui pose problème, pourtant cette routine seule fonctionne également. try: pi = p.as_dict(attrs=['pid', 'name']) except: pass else: if pi['name'] == 'Fichier.exe': exists = True break if not exists: os.startfile("C:/Fichier.exe") Schedule.start(Action_1) # Réinitialisation du Chronomètre return else: return >>> test() Traceback (most recent call last): File "<pyshell#92>", line 1, in <module> Action_1() TypeError: 'Schedule' object is not callable
Voilà j'espère avoir été clair, et que quelqu'un va pouvoir m'éclairer!
Un grand merci d'avance,
Bonne soirée à tous
Gauthier
Partager