2008/9/24 Enrico Franchi <[EMAIL PROTECTED]>: >> Supponiamo di leggere un file binario: >> >> fd = open('/tmp/foo','rb') >> cont = fd.read() >> fd.close() >> >> Ora, le mie domande sono: come si possono estrarre 5 byte da quella >> stringa evitando di utilizzare file.seek() e file.read()? >> Nel senso: ho a disposizione un tipo stringa che contiene dei byte >> di dati. >> - Come posso ottenere delle 'fette' di dati? >> - Come posso ottenere la lunghezza in byte di questi dati? > > Quello che ti dicevo riguardo al leggere un manuale. Le stringhe sono > sliceabili. > Sono proprio fatte apposta per prenderne delle fette. > > s[2:7]
Conoscevo dello slicing delle stringhe in stile MATLAB, ma quello che non capisco è se c'è una corrispondenza 1:1 tra s[i] e un byte del mio file. Se sì, a questo punto posso maneggiare senza problemi ogni byte del mio file, in quanto ogni byte è un carattere della mia stringa. O sono costretto ad usare il modulo struct di cui parlava Giorgio Zoppi? > > Io *non* erediterei da lista in generale. In particolare lista non è > la classe giusta di partenza. > Una lista ha un fottio di cose più di un BitSet, e sono cose che > ovviamente paghi in spazio e in tempo. > In secondo luogo io *non* userei l'ereditarietà, ma la composizione. Vero, errore mio. Al posto dell'ereditarietà è meglio usare la composizione, hai ragione. > Per rimanere in pure-python io userei probabilmente composizione con > array. > Ovviamente occupa molto più spazio di un bitset fatto di bit (ma > dovrebbe anche essere più veloce). Ok, un array di tipi bool True/False. > Questo se vuoi l'oggetto a livello didattico per vedere come si fa a > farlo. Se vuoi un oggetto che manipoli i bit io lo scriverei > appoggiandomi a C, wrappando con ctypes oppure usando direttamente le > API C di Python. IMHO usare ctypes rende il tutto sbaloriditivamente > banale. In due ore lo hai fatto e finito, con test allegati. Con le > API C di Python, beh, prima devi imparare un po' come funzionano. Non > che sia veramente complesso, ma forse sempre più rognoso di quello che > vuoi fare. Esatto, è molto piu' rognoso e non vorrei addentrarmi troppo nei dettagli. Vi ringrazio per l'aiuto. Michele _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python