comment puis-je obtenir le nombre d'octets d'une variable en python comme wc -c donne en unix

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

  •  19-09-2019
  •  | 
  •  

Question

Je suis face à un problème avec les fichiers avec des données énormes. je dois sauter faire une exécution sur ces fichiers. je reçois les données du fichier dans une variable. Maintenant, je dois obtenir l'octet de la variable et si elle est supérieure à 102400, puis imprimez un message.

Mise à jour: je ne peux pas ouvrir les fichiers, car il est présent dans un fichier tar.          le contenu est déjà copié à se une variable appelée « données »          je suis en mesure d'imprimer le contenu des données variables. J'ai juste besoin de vérifier si elle a plus de 102400 octets.

Merci

Était-ce utile?

La solution

Juste vérifier la longueur de la chaîne, puis:

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

Autres conseils

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

Mise à jour de travailler sur les fichiers dans un fichier 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 je comprends bien la question, vous voulez ignorer certains fichiers d'entrée si elles sont trop grandes. Pour cela, vous pouvez utiliser os.path.getsize() :

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

len(data) vous donne la taille en octets si elle est des données binaires. Avec les chaînes de la taille dépend de l'encodage utilisé.

Cette réponse ne semble pas pertinente, car il me semble avoir mal compris la question, qui a maintenant été clarifié. Cependant, si quelqu'un trouve cette question, tout en cherchant avec à peu près les mêmes termes, cette réponse peut encore être utile:

Il suffit d'ouvrir le fichier en mode binaire

f = open (nom de fichier, 'rb')

lire / sauter un groupe et d'imprimer l'octet suivant (s). J'utilisé la même méthode pour « fixer » l'octet de n-ième images dans une zillion fois.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top