Eu tenho um arquivo de texto.
Como posso verificar se está vazio ou não?
python
file
file-length
webminal.org
fonte
fonte
stat.ST_SIZE
em vez de 6fonte
OSError
e devolver Falso.Ambos
getsize()
estat()
lançarão uma exceção se o arquivo não existir. Esta função retornará True / False sem lançar (mais simples, mas menos robusta):fonte
os.path.getsize()
os.path.isfile(fpath)
eos.path.getsize(fpath)
, nesse caso, a função proposta gerará uma exceção.OSError
lugar, como proposto em outro comentário .TypeError
que será gerado no caso em que o caminho de entrada sejaNone
.se por algum motivo você já tinha o arquivo aberto, poderia tentar o seguinte:
fonte
Ok, então eu vou combinar a resposta de ghostdog74 e os comentários, apenas por diversão.
False
significa um arquivo não vazio.Então, vamos escrever uma função:
fonte
Se você estiver usando Python3,
pathlib
poderá acessaros.stat()
informações usando oPath.stat()
método, que possui o atributost_size
(tamanho do arquivo em bytes):fonte
se você tiver o objeto file, então
fonte
Uma dica importante: um arquivo vazio compactado parecerá diferente de zero quando testado com
getsize()
oustat()
funções:Portanto, você deve verificar se o arquivo a ser testado está compactado (por exemplo, examinar o sufixo do nome do arquivo) e, se for o caso, liberar ou descompactá-lo para um local temporário, testar o arquivo descompactado e excluí-lo quando terminar.
fonte
Como você não definiu o que é um arquivo vazio. Alguns podem considerar um arquivo com apenas linhas em branco e também um arquivo vazio. Portanto, se você quiser verificar se seu arquivo contém apenas linhas em branco (qualquer caractere de espaço em branco, '\ r', '\ n', '\ t') , siga o exemplo abaixo:
Python3
Explique: o exemplo acima usa expressão regular (regex) para corresponder ao conteúdo (
content
) do arquivo.Especificamente: para regex de:
^\s*$
como um todo significa se o arquivo contém apenas linhas em branco e / ou espaços em branco.-
^
afirma posição no início de uma linha-
\s
corresponde a qualquer caractere de espaço em branco (igual a [\ r \ n \ t \ f \ v])-
*
Quantificador - Corresponde entre zero e ilimitado vezes, quantas vezes for possível, retornando conforme necessário ( ganancioso)-
$
afirma a posição no final de uma linhafonte
se você deseja verificar se o arquivo csv está vazio ou não ... tente isso
fonte