script fichiers binaires lecture écriture

bruno modulix onurb at xiludom.gro
Thu Jun 30 06:35:59 EDT 2005


Statesman wrote in comp.lang.python:

<en>
Hi Statesman
comp.lang.python is the english-speaking Python forum. You may want to
try the french-speaking one at fr.comp.lang.python (xpost and fu2 set)
</en>

> Je connais mal python et n'est pas trop le temps de m'y plonger bien
> que cela semble être assez puissant...
>
> import sys
> import ixio
> import os
> 
> M = ixio.getMAC("eth0")
> S = "%08X %08X" % (M[0] | M[1]<<8 | M[2]<<16 | M[3]<<24, M[4] |
> M[5]<<8)
> K = "Errorin:"
> if len(sys.argv) <> 3:
>     print "Usage %s <src-file> <dst-file>" % sys.argv[0]
> else:
>     I = open(sys.argv[1],"rb")#ouverture de tpsd.pre avec le flag rb
> pour read in binary mode
>     O = open(sys.argv[2],"wb")
>     while 1:
>         blk = I.read(1<<13)
>         try:
>                 i = blk.index(K)
>                 blk = "%sErrorin:%s%s" \
>                       % (blk[:i],S,blk[i+len(K)+len(S):])
>                 O.write(blk)
>         except ValueError:
>                 O.write(blk)
>         if len(blk)<1<<13:
>                 break
>     O.close()
>     I.close()
> 
> Voici l'erreur que j'obtiens en essayant d'exécuter ce script:
> 
> AttributeError: 'string' object has no attribute 'index'
> 
> D'après moi, index est une méthode de la classe string et non un
> attribut...Je ne comprend donc pas... 

En Python, les fonctions sont des objets comme les autres. Donc les
methodes sont effectivement des attributs... (bon, dans le détail c'est
un poil plus compliqué que ça, mais là je te laisse consulter la doc...
si tu tiens vraiment à comprendre tous les détails d'implémentation)

> Enfin, je précise que je suis
> malheureusement en version 1.5 de python... :(

Euh... la dernière est la 2.4.1, il serait peut-être temps d'envisager
une mise à jour.

En attendant, dans la 1.5.x, tu peux utiliser le module String:
import String
s = "allo"
String.index(s, "a")

(de mémoire, pas testé).


> Autre question: 1<<13 est censé être une taille en octet: comment
> cela se lit-t-il?

opérateur de décalage de bits... 1 << 13 == 8192

> Merci d'avance de m'aclairer sur cette erreur et cette question.

HTH
-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb at xiludom.gro'.split('@')])"



More information about the Python-list mailing list