Je t'ai mis des commentaires, quelques incompréhensions sur le fond sont à éclaircir.
Sur la forme et la logique, du travail reste à faire,
from datetime import date
# Beaucoup trop d'espaces
ExtractionFichiez = [] # inutile on crée cette variable ligne 20
Contenue_fichiez = []
while len(ExtractionFichiez) > 0 : ExtractionFichiez.pop() # inutile, ligne 12 cette liste est censée être vide
while len(Contenue_fichiez) > 0 : Contenue_fichiez.pop() # idem, avec ligne 13
y = 0 # inutile, la variable y est créée ligne 24
# lignes = []
with open("data.txt", 'r') as filin:
lignes = filin.readlines() # attention, en fin de ligne on a des '\n', ne pas l'oublier
# for ligne in filin:
# lignes.append(ligne)
ExtractionFichiez = list(lignes) # inutile, readlines, retourne déjà une liste
# dans ce bloc for, que doit-on faire exactement
for i in range(len(ExtractionFichiez)):
y = str(ExtractionFichiez[-1])
y = y.strip()
del ExtractionFichiez[-1]
Contenue_fichiez.append(y)
Contenue_fichiez.reverse() # si on fait ça, autant dans le bloc
# précédent ajouter les éléments y depuis le début de ExtractionFichiez
while len(ExtractionFichiez) > 0 : ExtractionFichiez.pop() # ExtractionFichiez = [] suffira bien
# Trop d'espaces
# for ligne in lignes: ...
for i in range(len(lignes)): # Pourquoi ne pas itérer directement sur les éléments de la liste lignes
texte = str(Contenue_fichiez[i]) # Contenue_fichiez[i] est cencée être une chaîne de caractères, str est inutile
# Cette partie doit être expliquée, quel est le résultat attendu ?
date = texte[ : 10] # Tu écrases le module date, attention !!!
x = texte.find("\\") + 1
texte = texte[int((x + 1) - 1) : ]
x = texte.rfind("\\") + 1
matiere = texte[ : int(x - 1)]
nom_du_controle = texte[int((x + 1) - 1) : ]
print(date)
print(matiere)
print(nom_du_controle)
print(" ")
# Trop d'espaces
j = date[ :2]
m = date[3:5]
a = date[6: ]
print(j)
print(m)
print(a)
j = float(j)
m = float(m)
a = float(a)
d0 = date(a ,m, j) # cela ne peut pas fonctionner
# cette variable ne correspond plus à l'objet Date à cause de ligne 50.
d1 = date(2019 ,9, 22) # idem que plus haut
delta = d1 - d0
print(delta.days)
- Edité par fred1599 21 septembre 2019 à 13:34:38
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
et sa a l'infinie, le but est de prendre la date date dedans ( xx-xx-xxxx ) est de la soustraire a la date actuelle, pour savoir combien de jour il reste entre,il y a ptet un meuilleur moyen de trouver comment faire , par ocntre j'ai pas tout compris dans ton optimitation de mon code
( j'ai que deux semaine de python sous le bras...)
Il faut que tu fasses comme tu as appris, et je ne sais pas comment, dans tous les cas, tant que ça fait le café, c'est déjà très bien...
Après pour ton problème, tu as une ligne du style :xx-xx-xxxx\x\y
En prenant ton interpréteur python, on peut faire des tests sur une ligne et voir comment là manipuler.
Voici quelques détails
from datetime import date
ligne = ":25-02-2019\\x\\y"
str_date = ligne[1:11] # on appelle cela le slicing, on récupère la chaîne entre index 1 et (11-1)
print(str_date) # "25-02-2019"
date_split = list(map(int, str_date.split('-'))) # map va permettre de transformer en entier les chaînes à l'intérieur
# de la liste str_date
print(date_split) # [25, 2, 2019]
d = date(*reversed(date_split)) # 2019-02-25
today = date.today() # date d'ajourd'hui
delta = date.today() - d
print(delta.days) # 208 jours entre aujourd'hui et le 25/02/2019
Avec ça tu devrais plutôt t'en sortir pas mal je pense...
- Edité par fred1599 21 septembre 2019 à 17:49:52
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
for i in range(len(lignes)):
texte = str(Contenue_fichiez[i])
P = texte[ : 10]
x = texte.find("\\") + 1
texte = texte[int((x + 1) - 1) : ]
x = texte.rfind("\\") + 1
matiere = texte[ : int(x - 1)]
nom_du_controle = texte[int((x + 1) - 1) : ]
print(P)
print(matiere)
print(nom_du_controle)
print(" ")
tu comprend ?
( pour decomposer le fichiez )
- Edité par PigiTruc1 21 septembre 2019 à 17:54:23
str objet it not callabe
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)