Écrire des données entières dans un fichier texte
Fermémamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 12 sept. 2022 à 19:23
- Écrire des données entières dans un fichier texte
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Fichier host - Guide
3 réponses
8 sept. 2022 à 20:24
bonjour,
une des solutions possibles, c'est de transformer les entiers en caractères.
donne peut-être en exemple complet de ce que tu veux réaliser.
Modifié le 8 sept. 2022 à 21:14
Bonjour,
Ou alors faire ça avant d'écrire dans le fichier:
print("bonjour, choisis un nombre.") nc = input(">")
et ensuite, pour comparer, faire:
if(int(nc) > nb_de_base):
Modifié le 8 sept. 2022 à 21:18
non !
avec nc = input(), ça donne une string qui peut donc être écrite dans le fichier, alors
qu'avec nc = int(input()), on obtient un int, d'où l'erreur
ensuite, on converti la string nc en int pour comparer avec nb_de_base
8 sept. 2022 à 21:19
oui mais j'ai besoin d'une valeur int, existe t-il une façon de transformer la valeur string 10 par exemple et la transformer en 10 int
Modifié le 8 sept. 2022 à 21:26
C'est ce que je t'explique (tu ne lis pas mes messages ...)
d'abord, on saisit nc comme string
on l'écrit dans le fichier
ensuite, on la converti en int avec int(nc), ça, ça marche :
with open("ndp2.txt", "r+") as file: print(file.readline()) file.close() print("bonjour, choisis un nombre.") nc =input(">") nombre_de_base = 10 with open("ndp2.txt", "w+") as file: file.write(nc) file.close() if int(nc) >= nombre_de_base: print("Vous avez sélectionné un grand nombre")
Modifié le 12 sept. 2022 à 19:26
Bonjour,
Pour compléter la réponse de Phil, comme tu peux avoir besoin de nc sous forme d'int dans ton programme, tu peux écrire quelque chose de ce genre :
try: with open("fichier.txt", "r") as file: old_nc = int(file.readline()) except: old_nc = None if old_nc is not None: print("old_nc =", old_nc) nc = int(input(">")) with open("fichier.txt", "w") as file: print(nc, file=file)
On notera les différences suivantes :
- Pas besoin de mode r+ ou w+ : Le fichier est tantôt ouvert en écriture, tantôt en lecture et de manière exclusive. Le mode r et w sont donc suffisants.
- Ajout d'un try...except : Le bloc try ... except permet de rattraper le coup si le fichier n'existe pas encore, n'est pas lisible, ou que quelque chose ne va pas au moment d'en convertir le contenu sous forme d'entier. Si l'entier est chargé avec succès il est stocké dans old_nc. Sinon old_nc vaut None.
- Pas de close : Dans les extraits de code précédents, le fichier était explicitement fermé avec file.close().
- C'est l'intérêt de ce context manager : d'une part, le fichier est automatiquement fermé s'il a été ouvert succès.
- On ne devrait pas fermer un descripteur de fichier si le fichier n'a pas été ouvert avec succès). Ce cas de figure est également pris en charge.
- print au lieu de write : Dans les extraits de code précédents, on utilise file.write(...).
- Si nc est sous forme d'entier, on peut la transformer sous forme de chaîne avec la fonction str :
nc = 123 with open("fichier.txt", "w") as f: file.write(str(nc))
- Mais comme on peut le voir, c'est beaucoup moins naturel que directement utiliser print.
- En réalité, write ne devrait être réservé que dans les cas où le fichier f est un fichier binaire, i.e., ouvert avec open(..., "wb"). Mais si l'idée est de sauver des données dans un fichier binaire, on passerait plutôt par des modules natifs comme struct et pickle.
- Si nc est sous forme d'entier, on peut la transformer sous forme de chaîne avec la fonction str :
Bonne chance
8 sept. 2022 à 21:10