2 votes

Afficher un message d'erreur lorsque le fichier est vide - Bonne méthode?

Salut, je suis en train d'apprendre lentement la bonne façon d'écrire du code Python. supposez que j'ai un fichier texte que je veux vérifier s'il est vide, ce que je veux, c'est que le programme se termine immédiatement et que la fenêtre de la console affiche un message d'erreur si c'est effectivement vide. Jusqu'à présent, voici ce que j'ai fait. S'il vous plaît, enseignez-moi la méthode appropriée sur comment on devrait gérer ce cas :

import os

    def main():

        f1name = 'f1.txt'
        f1Cont = open(f1name,'r')

        if not f1Cont:
            print '%s est un fichier vide' %f1name
            os.system ('pause')

        #autre code

    if __name__ == '__main__':
        main()

1voto

AJ. Points 12912

Il est inutile d'ouvrir() le fichier, utilisez simplement os.stat().

>>> #créer un fichier vide
>>> f=open('testfile','w')
>>> f.close()
>>> #ouvrir le fichier vide en mode lecture pour prouver qu'il ne soulève pas d'IOError
>>> f=open('testfile','r')
>>> f.close()
>>> #obtenir la taille du fichier
>>> import os
>>> import stat
>>> os.stat('testfile')[stat.ST_SIZE]
0L
>>>

1voto

BasicWolf Points 8119

La manière pythonique de faire cela est :

essayer :
    f = open(f1name, 'r')
sauf IOError as e:
    # vous pouvez afficher l'erreur ici, par exemple
    print(str(e))

1voto

abaumg Points 1000

Peut-être un duplicata de ceci.

De la réponse originale :

import os
if (os.stat(f1name).st_size == 0)
    print 'Le fichier est vide!'

0voto

sateesh Points 7967

Si l'ouverture du fichier réussit, la valeur de 'f1Cont' sera un objet fichier et ne sera pas False (même si le fichier est vide). Vous pouvez vérifier si le fichier est vide (après une ouverture réussie) de la manière suivante :

if f1Cont.readlines(): print 'Le fichier n'est pas vide' else: print 'Le fichier est vide'

0voto

kindall Points 60645

En supposant que vous allez lire le fichier s'il contient des données, je recommanderais de l'ouvrir en mode ajout-mise à jour et de vérifier si la position du fichier est à zéro. Si c'est le cas, il n'y a pas de données dans le fichier. Sinon, nous pouvons le lire.

with open("filename", "a+") as f:
    if f.tell():
        f.seek(0)
        for line in f:   # lire le fichier
            print line.rstrip()
    else:
        print "pas de données dans le fichier"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X