00:51 <HS-157> Avec des sous !
17:28 <Mindiell> at last : "Merci d'avoir adhéré à l'AFPy !"
17:31 <fra^> :D
17:33 <fra^> https://lepetitfablabdeparis.fr/ <3
18:27 <discord_afpy> <yepla> Hello, petite question:
18:27 <discord_afpy> <yepla> je sauvegarde une liste dans un fichier comme ceci:
18:27 <discord_afpy> <yepla> f.write(str(l))
18:28 <discord_afpy> <yepla> ou l est la liste
18:28 <discord_afpy> <yepla> pour récupérer ma liste j'ouvre ce même fichier et je fais :
18:28 <discord_afpy> <yepla> l = eval(f.readline())
18:29 <discord_afpy> <yepla> est ce que c'est ok même si le fichier est très gros ?
18:31 <fra^> ça me parait un peu suspect
18:31 <fra^> pour 2 raisons...
18:32 <fra^> 1/ un seul readline pour lever tout le fichier. Est-ce-que ça fonctionne ?
18:32 <fra^> 2/ je pense que tu dois pouvoir faire l'économie du eval, qui, si je me souvient bien, consiste à faire évaluer du code de façon dynamique ?
18:33 <fra^> enfin c'est peut être "pythonique", mais comme je suis vieux jeu...
18:33 <fra^> possiblement, le eval() combiné à un fichier enorme, ça peut entrainer des complications, oui :)
18:33 <discord_afpy> <yepla> <fra^> 1/ un seul readline pour lever tout le fichier. Est-ce-que ça fonctionne ? <= justement c'est ma question 🙂
18:34 <fra^> le plus simple c'est de tester au debuggeur :)
18:34 <fra^> mais ça me surprends
18:34 <fra^> le risque c'est aussi de stocker ton fichier sous une forme lisible seulement par Python
18:34 <entwanne> yepla: Que contient ta liste ? Si elle contient que des types simples (int, float, str, list, dict) tu pourrais utiliser le module json
18:35 <fra^> +1 pour le json
18:36 <discord_afpy> <yepla> et si j'utilise read au lieu de readline c'est mieux ?
18:36 <discord_afpy> <yepla> je veux être sur que tout le fichier soit lu !
18:37 <fra^> ça me parait plus cohérent de mettre un "read" en face d'un "write"
18:37 <fra^> c'est une liste linéaire ?
18:37 <discord_afpy> <yepla> ok du coup voila mon code:
18:37 <fra^> ou un dict ?
18:37 <discord_afpy> <yepla> l = []
18:37 <discord_afpy> <yepla> try:
18:37 <discord_afpy> <yepla> with open('file.txt', 'r') as f:
18:37 <discord_afpy> <yepla> l = eval(f.read())
18:37 <discord_afpy> <yepla> except FileNotFoundError:
18:37 <discord_afpy> <yepla> pass
18:38 <discord_afpy> <yepla> c'est une liste avec des Decimal("...")
18:38 <fra^> oh la la :D
18:38 <fra^> la bombe à retardement :D
18:39 <discord_afpy> <yepla> c a d ? pourquoi ?
18:39 <fra^> le try avec un except pass, ça fait échouer ton code en silence
18:39 <fra^> enfin, si ton code échoue, ça sera en silence
18:39 <discord_afpy> <yepla> justement c'est se que je veux 🙂
18:39 <fra^> pour l'utilisateur c'est pas hyper sympa, mais soit
18:40 <entwanne> si c'est une liste de Decimal (et uniquement ça) tu peux toujours les sérialiser en chaînes de caractères et les désérialiser à la lecture du fichier
18:40 <discord_afpy> <yepla> je fais ça pour initialiser ma liste l
18:40 <discord_afpy> <yepla> @entwanne ha oui pas bête !
18:43 <discord_afpy> <yepla> <entwanne> si c'est une liste de Decimal (et uniquement ça) tu peux toujours les sérialiser en chaînes de caractères et les désérialiser à la lecture du fichier <= pour ça je verrais demain je suis un peu casser j'ai code toute la nuit 🙂
18:54 <discord_afpy> <dancergraham> tres gros c'est combien de valeurs? Si ca prend du temps il vaut peut-etre mieux utiliser `pandas.read_csv` ou `numpy.loadtxt` pour recuperer les valeurs dans un dataframe ou array respectivement
19:00 <discord_afpy> <yepla> en faite je sais pas vraiment combien de valeurs il y aura
19:01 <discord_afpy> <yepla> par contre la je suis épuisé je verrais tous ça plus tard (demain sans doute)
19:02 <discord_afpy> <yepla> en tout cas merci pour vos réponses
19:02 <discord_afpy> <yepla> bonne soirée à tous 😉