Gestion de fichier python
Bonjour,
Je souhaiterais savoir s'il est possible de supprimer une ligne de code dans un fichier python grâce à une ligne de code en python.
Ce que je veux dire par là, c'est que j'ai ça dans une partie de mon code ou c'est une sorte de petit questionnaire avec du
... et je souhaiterais faire en sorte que dès le moment même ou la fenêtre
Je vous remercie d'avance pour vos précieuses réponses même si elles sont négatives (sur la question bien évidement pas sur moi q-q)
Je souhaiterais savoir s'il est possible de supprimer une ligne de code dans un fichier python grâce à une ligne de code en python.
Ce que je veux dire par là, c'est que j'ai ça dans une partie de mon code ou c'est une sorte de petit questionnaire avec du
tkinterdedans :
nb_erreur = str(nb_erreur)
save = open("réponse.txt","r")
lignes = save.readlines()
save.close()
lignes[0]= nb_erreur + "\n"
save = open("réponse.txt","w")
save.writelines(lignes)
save.close()
nb_erreur = int(nb_erreur)
print(nb_erreur)
... et je souhaiterais faire en sorte que dès le moment même ou la fenêtre
tkinterse ferme, ces quelques lignes soit supprimées de mon code afin d'éviter que la personne reprennent le programme pour modifier la valeur et tricher :D
Je vous remercie d'avance pour vos précieuses réponses même si elles sont négatives (sur la question bien évidement pas sur moi q-q)
A voir également:
- Gestion de fichier python
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
2 réponses
Le problème avec la suppression de ligne c'est qu'on ne peut pas l'inverser.
Voici un code qui le fait (sans inverser) :
Pour retrouver le code original, je te conseille de te tourner vers la cryptographie...
Voici un code qui le fait (sans inverser) :
def end():
#Recupere le contenu
file = open("<CODE>.py","r")
contenu = file.read().split("\n")
file.close()
#Supprime les 10 premieres lignes
for i in range(10):
del contenu[0]
#Sauvegarde le nouveau fichier (et écrase l'ancien)
file = open("<CODE>.py","w")
file.write("\n".join(contenu))
file.close()
Pour retrouver le code original, je te conseille de te tourner vers la cryptographie...
Bonjour,
Personnellement je n'ai pas vraiment compris ton problème, sans doute car tu n'as pas expliqué à quelle moment
En outre, quel est l'intérêt de sauver des données sur le disque dur si tu ne veux pas qu'elles soient lues ? Pourquoi ne pas juste les garder en mémoire ?
Si tu as besoin de les charger au prochain lancement du programme, comment espérer les retrouver si tu ne peux pas les charger depuis un fichier ?
Concernant la cryptographie, ça peut être une solution "limitante" mais pas bloquante dans l'absolu, car un fichier python est lisible, donc la technique de chiffrement / chiffrement est probablement reproductible en dehors du programme. Si tu veux une solution "limitante" pour la majorité des utilisateurs, tu pourrais te contenter de sauver tes données sous formes binaires (e.g., avec
Concernant le code de ton premier message, pour un code plus propre, on gère les ouvertures de fichiers au sens large (ce qui inclue, comme dans ton cas, les fichiers réguliers, mais également les sockets) dans un context manager (via l'instruction
Plutôt qu'utiliser la méthode
Bonnne chance
Personnellement je n'ai pas vraiment compris ton problème, sans doute car tu n'as pas expliqué à quelle moment
réponses.txtétait lu (au chargement de l'application), qui l'avait créé, et son rôle une fois l'application fermée.
En outre, quel est l'intérêt de sauver des données sur le disque dur si tu ne veux pas qu'elles soient lues ? Pourquoi ne pas juste les garder en mémoire ?
Si tu as besoin de les charger au prochain lancement du programme, comment espérer les retrouver si tu ne peux pas les charger depuis un fichier ?
Concernant la cryptographie, ça peut être une solution "limitante" mais pas bloquante dans l'absolu, car un fichier python est lisible, donc la technique de chiffrement / chiffrement est probablement reproductible en dehors du programme. Si tu veux une solution "limitante" pour la majorité des utilisateurs, tu pourrais te contenter de sauver tes données sous formes binaires (e.g., avec
pickleou
dill) plutôt qu'utiliser un format texte.
Concernant le code de ton premier message, pour un code plus propre, on gère les ouvertures de fichiers au sens large (ce qui inclue, comme dans ton cas, les fichiers réguliers, mais également les sockets) dans un context manager (via l'instruction
with) afin de garantir que tout est fermé quand il faut et s'il le faut (notamment en cas d'exception).
lines = None
with open("mon_fichier.txt", "r") as f:
lines = f.readlines()
print(lines)
Plutôt qu'utiliser la méthode
write, on peut aussi écrire dans un fichier comme on le ferait avec la sortie standard à l'aide de
with open("mon_fichier.txt", "w") as f:
print("Hello", file=f)
Bonnne chance
Et ensuite c'est pas un problème si on peut pas l'inverser je garderai un fichier de sauvegarde au cas ou c'est le but que la suppression de mes lignes ne soient pas inversible :D Si le code le fait parfaitement ça ne te dérange pas que je le pique :D ?
Et dernière petite question je vois dans ta boucle for que le fichier va supprimer les 10 premières lignes de mon fichier ^^ je peux pas faire en sorte de supprimer seulement les lignes que je veux et non les x premières lignes ?
Et merci pour la cryptographie je viens de regarder et ça à l'air très intéressant je vais plus me tourner sur ça je oense
Merci :D