Como faço para obter a contagem de bytes de uma variável em python como -c wc dá em unix

StackOverflow https://stackoverflow.com/questions/2020318

  •  19-09-2019
  •  | 
  •  

Pergunta

eu estou enfrentando algum problema com arquivos com dados enormes. eu preciso pular fazendo alguma execução nesses arquivos. i obter os dados do arquivo em uma variável. agora eu preciso para obter o byte da variável e se for maior do que 102400, em seguida, imprimir a mensagem.

Update: Eu não pode abrir os arquivos, uma vez que está presente em um arquivo tar. o conteúdo já está sendo copiado para uma variável chamada 'dados' eu sou capaz de imprimir conteúdo dos dados variáveis. Eu só preciso verificar se ele tem mais de 102400 bytes.

graças

Foi útil?

Solução

Basta verificar o comprimento da corda, em seguida:

if len(data) > 102400:
  print "Skipping file which is too large, at %d bytes" % len(data)
else:
  process(data) # The normal processing

Outras dicas

import os
length_in_bytes = os.stat('file.txt').st_size
if length_in_bytes > 102400:
   print 'Its a big file!'

Atualização para trabalhar em arquivos em um arquivo tar

import tarfile
tf = tarfile.TarFile('foo.tar')
for member in tarfile.getmembers():
    if member.size > 102400:
        print 'It's a big file in a tarfile - the file is called %s!' % member.name

Se eu estou entendendo a pergunta corretamente, você quer ignorar determinados arquivos de entrada se eles são muito grandes. Para isso, você pode usar os.path.getsize() :

import os.path
if os.path.getsize('f') <= 102400:
  doit();

len(data) lhe dá o tamanho em bytes se é dados binários. Com cordas o tamanho depende da codificação usada.

Esta resposta parece irrelevante, já que parecem ter entendido mal a pergunta, que agora foi esclarecida. No entanto, se alguém encontrar esta questão, enquanto procura com praticamente os mesmos termos, esta resposta pode ainda ser relevante:

Basta abrir o arquivo em modo binário

f = open (filename, 'rb')

leitura / pular um monte e imprimir o próximo byte (s). Eu usei o mesmo método para 'consertar' o enésimo byte em um zilhão de imagens de uma vez.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top