Tengo un archivo de texto
¿Cómo puedo verificar si está vacío o no?
python
file
file-length
webminal.org
fuente
fuente

stat.ST_SIZEen lugar de 6fuente
OSErrory devolver False.Ambos
getsize()ystat()lanzarán una excepción si el archivo no existe. Esta función devolverá Verdadero / Falso sin lanzar (más simple pero menos robusto):fuente
os.path.getsize()os.path.isfile(fpath)yos.path.getsize(fpath), en cuyo caso la función propuesta generará una excepción.OSError, como se propone en otro comentario .TypeErrorcuál se generará en caso de que la entrada fpath seaNone.si por alguna razón ya tenía el archivo abierto, podría intentar esto:
fuente
Ok, entonces combinaré la respuesta de ghostdog74 y los comentarios, solo por diversión.
Falsesignifica un archivo no vacío.Entonces, escribamos una función:
fuente
Si está utilizando Python3
pathlib, puede acceder a laos.stat()información utilizando elPath.stat()método, que tiene el atributost_size(tamaño del archivo en bytes):fuente
si tiene el objeto de archivo, entonces
fuente
Un problema importante: un archivo vacío comprimido parecerá ser distinto de cero cuando se pruebe con
getsize()ostat()funciones:Por lo tanto, debe verificar si el archivo que se va a probar está comprimido (por ejemplo, examinar el sufijo del nombre de archivo) y, de ser así, rescatarlo o descomprimirlo en una ubicación temporal, probar el archivo sin comprimir y luego eliminarlo cuando haya terminado.
fuente
Como no has definido qué es un archivo vacío. Algunos podrían considerar un archivo con solo líneas en blanco y también un archivo vacío. Entonces, si desea verificar si su archivo contiene solo líneas en blanco (cualquier carácter de espacio en blanco, '\ r', '\ n', '\ t') , puede seguir el siguiente ejemplo:
Python3
Explique: el ejemplo anterior usa la expresión regular (regex) para que coincida con el contenido (
content) del archivo.Específicamente: para expresiones regulares de:
^\s*$en su conjunto significa si el archivo contiene solo líneas en blanco y / o espacios en blanco.-
^afirma la posición al comienzo de una línea-
\scoincide con cualquier carácter de espacio en blanco (igual a [\ r \ n \ t \ f \ v])-
*Cuantificador - Coincide entre cero e ilimitado veces, tantas veces como sea posible, devolviendo según sea necesario ( codicioso)-
$afirma la posición al final de una líneafuente
si desea comprobar que el archivo csv está vacío o no ... intente esto
fuente