Python récupérer la valeur d'un fichier

Fermé
toto5812 Messages postés 57 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 21 janvier 2015 - 19 oct. 2010 à 20:40
 toto5812 - 21 oct. 2010 à 17:00
Bonjour,
J'aimerais récupérer la première valeur contenu dans un fichier "v" susceptible d'être modifiée régulièrement par un programme externe, effectuer un petit calcul sur cette valeur et l'afficher dans une fenêtre. Ce que j'aimerais c'est que la valeur affichée change lorsque le fichier est modifié.
Je pensais réussir avec une boucle while comme ci-dessous, mais ça ne marche pas, lorsque le fichier est modifié l'affichage ne change pas...

Merci de votre aide (je débute!)

a = 0
while a < 100:
    contenu = open("v", "r").read()
    contenu = contenu.split(",")
    a = contenu[0]
    temp = float(a)/2
    str1 = "%.1f" % (temp)   
    text1.insert(INSERT, str1)



A voir également:

3 réponses

pourrais-tu préciser quelques infos: ton programme doit il tourner pendant un certain temps? un certains nombre de calculs? les mises à jour du fichier "v" est elle régulière?

import time

a = 0
while True:
    contenu = open("v", "r").read()
    contenu = contenu.split(",")
    a = contenu[0]
    temp = float(a)/2
    str1 = "%.1f" % (temp)   
    text1.insert(INSERT, str1)
    
    time.sleep(XXX)  # ou XXX est un nombre entier ou reel de secondes

Voilà un petit exemple vite fait qui te permet de "relancer" tous les XXX secondes l'ouverture du fichier. Après il faudra prévoir si besoin une sortie de la boucle while
0
Bonjour et merci de ta réponse!
En fait, le fichier v est mis à jour régulièrement via un script externe "temp.sh" et j'aimerais que ce script se lance puis afficher la valeur convertie avec le petit programme python. J'aimerais que cette séquence (lancement du script "temp.sh" effectuant la mise à jour de "v" et le traitement par python ci-dessus) s'effectue toutes les 5 secondes par exemple...

Après, le programme ne doit pas tourner un certain temps... Il faut qu'il tourne lorsqu'on le lance jusqu'à ce qu'on décide de l'arrêter. L'idéal serait de rajouter un bouton "quitter" dans la fenêtre. Mais ça j'y réfléchirais après...

Sinon, j'essaie de changer manuellement le fichier "v" et je n'arrive pas à rafraichir la valeur, même avec la solution que tu proposais

time.sleep(5)
0
le script externe il est à toi? car si oui tu pourrais appeler ta fonction python juste après la mise à jour

Chez moi ça fonctionne quand je change la valeur dans le fichier 'test.txt' alors que 'test.py' tourne

#! /usr/bin/python 
# -*- coding: UTF-8 -*- 

import time 

str1 = '' 
X=0 

while X<12: 
 contenu = open("test.txt", "r").read() 
 contenu = contenu.split(",") 
 a = contenu[0] 
 temp = float(a)/2 
 str1 = "%.1f" % (temp)    
 print str1 
 time.sleep(5) 
 X+=1

et voilà la sortie console:
[ ~/Desktop ] python test.py  
6.0 
6.0 
6.0 
10.0 
10.0 
10.0 
20.0 
20.0 
20.0 
16.5 
16.5 
16.5


Essaie d'en dire plus sur le fait que mon code ne fonctionnait pas chez toi.
Pour terminer assure toi que ta fonction .insert() est correctement utilisée: dans ton cas, text1 doit être une liste, et 0 < INSERT < len(text1)
0
Oui, en effet ça marche!
Je m'étais trompé dans la fonction .insert()

Merci
0