Partage
  • Partager sur Facebook
  • Partager sur Twitter

Test fichier vide et si non readlines

Sujet résolu
    10 août 2015 à 11:39:59

    Bonjour,

    Je souhaite tester si un fichier est vide :
    - si oui j'écris dans mon fichier résultat une ligne "le calcul a planté"
    - si non je récupère une certaine ligne dans le fichier et je la met dans mon fichier résultat

    Mon problème est le suivant : au moment ou je fais le readlines, le fichier devient subitement vide, je pense que c'est pcq tout va dans le buffer pendant un petit moment avant de continuer mon action et du coup il sort de mon else et me renvoie que le fichier est vide  :/

    Y a-t-il une solution pour éviter cette fraction de seconde ou le fichier devient vide car il stocke les données qu'il lit ailleurs ?

    Voici mon code :

    if os.stat(resultat_calcul).st_size==0:
    		resultat.write('le calcul a plante \n')
    else:
    	#alors on supprime les deux premieres lignes pour ne recuperer que la derniere ie la troisieme
    	with open(resultat_calcul, 'r') as fichier_entree:
    		data = fichier_entree.read().splitlines(True)
    	with open(resultat_calcul, 'w') as fichier_sortie:
    		fichier_sortie.writelines(data[2:])
    	# on recupere les donnees dans une liste, separateur : espaces
    	contenu=open(resultat_calcul,"r").read()
    	contenu=contenu.split(" ")
    	# #ecriture du fichier resultat
    	entree_post=open(resultat_calcul,'r')
    	lignes=entree_post.readlines()
    	entree_post.close()
    	donnee1,donnee2,donnee3,donnee4=split(strip(lignes[-1]),)
    resultat.write('%t%12s\t%20s\t%20s\t%20s\n' %(donnee1,donnee2,donnee3,donnee4))
    print 'RESULTAT DE L ESSAI ECRIT DANS LE FICHIER resultat.txt'

    Voici à quoi ressemble mon fichier que je veux tester qd le calcul a marché (avec une ligne vide avant le texte):


    # donnée1 donnée2 donnée3 donnée4 valeur1 valeur2 valeur3 valeur4


    C'est au moment du 

    lignes=entree_post.readlines()

    que le fichier que je lis devient vide

    Merci d'avance à ceux qui ont une idée !! :)


    -
    Edité par Maym 10 août 2015 à 11:41:48

    • Partager sur Facebook
    • Partager sur Twitter
      10 août 2015 à 18:54:04

      Tu ouvres le fichier resultat_calcul une première fois, tu le lis, puis l'ouvre une deuxième fois pour écrire par dessus en mode "w", ce qui écrase son contenu.
      • Partager sur Facebook
      • Partager sur Twitter
      yjltg.
        12 août 2015 à 16:15:12

        J'ai remplacé :

        lignes=entree_post.readlines()
        entree_post.close()
        donnee1,donnee2,donnee3,donnee4=split(strip(lignes[-1]),)

        par

        donnee1,donnee2,donnee3,donnee4=split(strip(entree_post.readlines()[-1]),)

        Du coup ça marche !

        Merci :) 

        • Partager sur Facebook
        • Partager sur Twitter

        Test fichier vide et si non readlines

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown