Come faccio ad avere il numero di byte di una variabile in pitone proprio come wc -c dà in UNIX

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

  •  19-09-2019
  •  | 
  •  

Domanda

sto affrontando qualche problema con i file con i dati enorme. ho bisogno di fare un po 'saltare l'esecuzione su tali file. ottengo i dati del file in una variabile. ora ho bisogno di ottenere il byte della variabile e se è maggiore di 102400, quindi stampare un messaggio.

Aggiornamento: Non riesco ad aprire i file, dal momento che è presente in un file tar.          il contenuto è già ottenendo copiato in una variabile chiamata 'dati'          io sono in grado di stampare il contenuto dei dati variabili. ho solo bisogno di controllare se ha più di 102400 byte.

grazie

È stato utile?

Soluzione

Basta controllare la lunghezza della stringa, quindi:

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

Altri suggerimenti

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

Aggiornamento per lavorare sui file in un tarfile

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 ho la comprensione correttamente alla domanda, si desidera saltare alcuni file di input se sono troppo grandi. Per questo, è possibile utilizzare os.path.getsize() :

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

len(data) ti dà la dimensione in byte se è dati binari. Con corde la dimensione dipende dalla codifica utilizzata.

Questa risposta sembra irrilevante, dal momento che mi sembra di aver capito la domanda, che ora è stato chiarito. Tuttavia, se qualcuno dovesse trovare questa domanda, durante la ricerca con più o meno gli stessi termini, questa risposta può essere ancora rilevanti:

Basta aprire il file in modalità binaria

f = open (filename, 'rb')

lettura / saltare un mucchio e stampare il byte successivo (s). Ho usato lo stesso metodo per 'risolvere' il byte n-esimo in un triliardo di immagini una volta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top