J'ai un fichier texte.
Comment puis-je vérifier s'il est vide ou non?
python
file
file-length
webminal.org
la source
la source
stat.ST_SIZE
au lieu de 6la source
OSError
et retourner Faux.Les deux
getsize()
etstat()
lèveront une exception si le fichier n'existe pas. Cette fonction retournera True / False sans lancer (plus simple mais moins robuste):la source
os.path.getsize()
os.path.isfile(fpath)
etos.path.getsize(fpath)
, auquel cas la fonction proposée déclenche une exception.OSError
plutôt, comme proposé dans un autre commentaire .TypeError
ce qui sera augmenté dans le cas où le fpath d'entrée estNone
.si pour une raison quelconque vous aviez déjà ouvert le fichier, vous pouvez essayer ceci:
la source
Ok donc je vais combiner la réponse de ghostdog74 et les commentaires, juste pour le plaisir.
False
signifie un fichier non vide.Écrivons donc une fonction:
la source
Si vous utilisez Python3 avec,
pathlib
vous pouvez accéder auxos.stat()
informations à l'aide de laPath.stat()
méthode, qui a l'attributst_size
(taille du fichier en octets):la source
si vous avez l'objet fichier, alors
la source
Un piège important: un fichier vide compressé apparaîtra non nul lorsqu'il est testé avec
getsize()
oustat()
fonctionne:Vous devez donc vérifier si le fichier à tester est compressé (par exemple, examinez le suffixe du nom de fichier) et si c'est le cas, libérez-le ou décompressez-le dans un emplacement temporaire, testez le fichier non compressé, puis supprimez-le une fois terminé.
la source
Puisque vous n'avez pas défini ce qu'est un fichier vide. Certains pourraient considérer un fichier avec des lignes vides comme un fichier vide. Donc, si vous voulez vérifier si votre fichier ne contient que des lignes vides (n'importe quel caractère d'espacement, '\ r', '\ n', '\ t') , vous pouvez suivre l'exemple ci-dessous:
Python3
Expliquez: l'exemple ci-dessus utilise une expression régulière (regex) pour faire correspondre le contenu (
content
) du fichier.Plus précisément: pour l'expression régulière de:
^\s*$
dans son ensemble signifie que le fichier ne contient que des lignes vides et / ou des espaces vides.-
^
affirme la position au début d'une ligne-
\s
correspond à tout caractère d'espacement (égal à [\ r \ n \ t \ f \ v])-
*
Quantificateur - Correspond entre zéro et un nombre illimité de fois, autant de fois que possible, en redonnant au besoin ( gourmand)-
$
affirme sa position à la fin d'une lignela source
si vous voulez vérifier que le fichier csv est vide ou non ....... essayez ceci
la source