Wie bekomme ich die Anzahl der Bytes einer Variablen in Python wie wc -c in Unix gibt

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

  •  19-09-2019
  •  | 
  •  

Frage

i bin vor einem Problem mit Dateien mit großen Datenmengen. Ich brauche dabei einige Ausführung auf diese Dateien zu überspringen. Ich erhalte die Daten der Datei in eine Variable. jetzt brauche ich das Byte der Variablen zu bekommen, und wenn sie größer als 102400 ist, dann eine Nachricht drucken.

Update: Ich kann die Dateien nicht öffnen, da es in einer TAR-Datei ist.          der Inhalt bereits auf eine Variable ‚Daten‘ genannt kopiert zu werden          ich bin der Lage, Inhalte der variablen Daten zu drucken. Ich muss nur prüfen, ob es mehr als 102.400 Bytes hat.

Dank

War es hilfreich?

Lösung

Just überprüfen Sie die Länge der Zeichenfolge, dann:

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

Andere Tipps

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

Update auf Dateien in einer Tar-Datei arbeiten

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

Wenn ich die Frage richtig bin zu verstehen, wollen Sie bestimmte Eingabedateien überspringen, wenn sie zu groß sind. Dafür können Sie verwenden os.path.getsize() :

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

len(data) gibt Ihnen die Größe in Bytes, wenn es Binärdaten ist. Bei Strings hängt die Größe auf der Codierung verwendet wird.

Diese Antwort scheint irrelevant, da ich die Frage falsch verstanden zu haben scheinen, die geklärt jetzt wurde. Allerdings sollte jemand diese Frage finden, während mit so ziemlich den gleichen Begriffen suchen, diese Antwort kann noch relevant sein:

Öffnen Sie einfach die Datei im Binär-Modus

f = open (Dateiname, 'rb')

Lesen / ein paar überspringen und drucken Sie das nächste Byte (s). Ich verwendete die gleiche Methode zu ‚reparieren‘ die n-te Byte in zig Bilder einmal.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top