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_SIZE
en lugar de 6fuente
OSError
y 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 .TypeError
cuá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.
False
significa 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-
\s
coincide 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