¿Cómo puedo obtener el número de bytes de una variable en Python igual wc -c da en UNIX

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

  •  19-09-2019
  •  | 
  •  

Pregunta

estoy frente a un problema con los archivos con datos de gran tamaño. i necesidad de saltar de hacer algunas ejecución en esos archivos. i obtener los datos del archivo en una variable. Ahora necesito para obtener el byte de la variable y si es superior a 102.400, a continuación, imprimir un mensaje.

Actualización: No puedo abrir los archivos, ya que está presente en un archivo tar.          el contenido ya está siendo copiado en una variable llamada 'datos'          soy capaz de imprimir el contenido de los datos variables. Sólo necesito para comprobar si tiene más de 102400 bytes.

gracias

¿Fue útil?

Solución

Sólo tienes que comprobar la longitud de la cadena, entonces:

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

Otros consejos

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

Actualizar para trabajar en archivos en un fichero 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

Si yo estoy entendiendo correctamente la pregunta, desea omitir ciertos archivos de entrada si son demasiado grandes. Por eso, se puede utilizar os.path.getsize() :

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

len(data) le da el tamaño en bytes si se trata de datos binarios. Con cuerdas el tamaño depende de la codificación utilizada.

Esta respuesta parece irrelevante, ya que me parece haber entendido mal la pregunta, que ahora se ha aclarado. Sin embargo, si alguien encuentra esta pregunta, mientras que la búsqueda con prácticamente los mismos términos, esta respuesta puede seguir siendo relevante:

Sólo tiene que abrir el archivo en modo binario

f = open (nombre de archivo, 'rb')

leer / salta un montón e imprimir el siguiente byte (s). He utilizado el mismo método para 'arreglar' el byte de orden n en un trillón de imágenes de una vez.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top