Page 1 sur 1
[RESOLU] Manipulation de fichier en python
Posté : sam. 29 nov. 2014 02:30
par EVOTk
Bonsoir,
Pour mon projet, je souhaiterai pouvoir dans un fichier stocker des valeurs de températures.
Pas de probleme la dessus. Ni pour les recupérer, grace a "readlines()"
Par contre, je souhaiterai au besoin ne modifier qu'une ligne de mon fichier texte au travers de mon programme, et visiblement se n'est pas possible de reecrire qu'une seul ligne d'un fichier .txt
C'est le cas ?
Dans se cas la seule solution est de lire/copier mon fichier, changer la valeur voulue et re-ecrire le fichier ?
Re: Manipulation de fichier en python
Posté : sam. 29 nov. 2014 08:55
par vague nerd
Bonjour.
En java, pas de problème. Mais j'imagine que tu parles de python.
A prioris, ce n'est pas possible. Pour simplifier ton écriture/réécriture, creuse ce qui suit.
Tu peux accéder à un endroit précis d'un fichier sans avoir à lire le fichier entier (cas de gros fichiers):
Code : Tout sélectionner
>>> f = open("bonnie.txt", "wb")
>>> f.write("My Bonnie lies over the ocean.")
>>> f.close()
>>> f.open("bonnie.txt", "r+b")
>>> mm = mmap(f.fileno(), 0)
>>> print mm[3:9]
Bonnie
On peux aussi modifier l'objet mmap
Code : Tout sélectionner
>>> print mm[24:]
ocean.
>>> mm[24:] = "sea. "
>>> print mm[:]
My Bonnie lies over the sea.
Edit : j'ai oublié de citer ma source. Je n'ai plus accès accès à l'historique du navigateur, et impossible de retrouver le site. Dsl.
Re: Manipulation de fichier en python
Posté : sam. 29 nov. 2014 11:18
par mike913
Bonjour,
Tu peux aussi utiliser les fichiers de type 'configuration' (*.ini) avec la librairie configparser.
Ces fichiers sont de la forme:
et ainsi de suite
ainsi tu peux lire et modifier la cle-2 de la Section-1
Re: Manipulation de fichier en python
Posté : sam. 29 nov. 2014 11:48
par mike913
Voici un exemple d' utilisation:
Le fichier Test.ini
Code : Tout sélectionner
[Fichiers]
logs = /var/www/RFX-Meteo/logs/Meteo.txt
status = /var/www/RFX-Meteo/config/Status.txt
meteoxml = /var/www/RFX-Meteo/datas/Sondes.xml
logsxml = /var/www/RFX-Meteo/logs/MeteoXml.txt
[Sondes]
tx5 = Rain6
50-05-4c-00 = Temp
51-01-4c-00 = HUM1
et un exemple pour manipuler ce fichier:
Code : Tout sélectionner
#!/usr/bin/env python
# coding=UTF-8
# =====================================
# import des modules
import serial
import datetime
import time
import struct
import sys
import os
import ConfigParser
# ----------------------------------------------------------------------------
# Lit la configuration
# ----------------------------------------------------------------------------
def Get_Config(configfile):
cfg = ConfigParser.ConfigParser()
cfg.read(configfile)
return cfg
# ----------------------------------------------------------------------------
# Ecrit dans le fichier de configuration
# ----------------------------------------------------------------------------
def Set_Config(configfile, cfg):
with open(configfile, 'wb') as config:
cfg.write(config)
#-------------------------------------------
# Boucle principale
#-------------------------------------------
cfgConf = Get_Config('Test.ini')
print cfgConf.get('Fichiers', 'meteoxml')
cfgConf.set('Fichiers', 'meteoxml','Nouvelle Valeur')
Set_Config('Test.ini', cfgConf)
Re: Manipulation de fichier en python
Posté : lun. 1 déc. 2014 12:24
par Manfraid
la meilleurs techinque pour faire un enreigstrement sur un fichier sans en relire complètement le contenu et ceci
Code : Tout sélectionner
f = open('monfichier.txt','a')
f.write('Ma ligne\n')
f.close()
et a chaque foi que le code sera executer une nouvelle ligne dans le fichier sera ajouter
Re: Manipulation de fichier en python
Posté : lun. 1 déc. 2014 13:09
par vague nerd
@Manfraid : evo ne veut pas écrire à la fin du fichier, mais en plein milieu.
Re: Manipulation de fichier en python
Posté : lun. 1 déc. 2014 13:26
par Manfraid
exact j'avais mal lu sont problème
dans ce cas pas le choix de passer dans tout le fichier et de modifier la ligne
Evotk : Aurais-tu un exemple de la structure de ton fichier pour avoir un ordre d'idée de command le modifier
Re: Manipulation de fichier en python
Posté : mar. 2 déc. 2014 18:21
par EVOTk
Salut Manfraid,
Je voulai faire un fichier de configuration du type :
####### CONFIG #####
--- TEMPERATURE ---
JOUR = 18
NUIT = 16
---
Et pouvoir modifier 18 ou 16 suivant le besoin via python
Mais visiblement sans re-ecrire tout le fichier a chaque fois cela n'est pas possible et bien que mon fichier ne sera pas gros du tout lidée me plait pas vraiment !
La proposition de mike913 me semble plutot adapté a se que je souhaite faire, je m'y pencherai quand je serai en repos

Re: Manipulation de fichier en python
Posté : dim. 7 déc. 2014 18:34
par zeverybest
Le plus simple serai soit de passer par un fichier XML (Python sait modifier une ligne ou un champ des ce type de fichier)
Soit de mettre tes valeurs dans une base SQL
C'est à mon sens, les moyens les plus simple pour modifier une seule valeur dans un fichier
Re: Manipulation de fichier en python
Posté : jeu. 11 déc. 2014 18:14
par EVOTk
Hello,
la solution de mike913 me convient parfaitement pour le moment. Merci a vous.