Forum >> Programmazione Python >> Scripting >> Ciao! Chi mi aiuta?

Pagina: 1

Salve sono nuovo nella programmazione...

Vorrei creare uno script in Python ma non so da dove iniziare, ho bisogno di uno script che mi vada a cercare una o più stringhe bit di un file binario e me la vada a modificare salvando ad esempio il file modificato sul Desktop

OFFSET (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

------------------------------------------------------------------------------------------------------------

00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Devo ad esempio trasformarli in

OFFSET (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

------------------------------------------------------------------------------------------------------------

00000000 00 00 00 00 00 00 11 11 11 11 11 11 11 11 00 00

00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Come posso fare?
Ciao, se sei proprio ai primi passi forse dovresti iniziare con script più semplici di questo, comunque provo a darti tutte le indicazioni per procedere.
Per prima cosa devi aprire un file in scrittura, se non sai come fare in Python e sufficiente un'istruzione open

quindi devi scrivere:

open(file, "w")

dove file sarà il nome del tuo file, oppure il path ed il nome (il nome o il path è una stringa quindi va tra apici singoli o doppi) ed il secondo parametro ("w") indica che vuoi aprirlo in scrittura.

Però, dato che vuoi modificarlo, ed aprendolo in scrittura lo sovrascriveresti, dovresti aprire il file di partenza in lettura ("r") e crearne uno nuovo su cui scrivere le modifiche.

Quindi dovresti scrivere qualcosa del genere:

fileLetto = open("filePartenza.txt", "r")
fileScritto = open("fileArrivo.txt", "w")

Così ti rimangono i due riferimenti ai due file con cui puoi fare le operazioni che ti servono.

Se volessi fare quello che hai detto su un file di testo ti basterebbe aggiungere queste righe:

for linea in fileLetto:
nuovaLinea = linea.replace("o", "0")
fileScritto.write(nuovaLinea)

ed alla fine chiudere entrambi i file:

fileScritto.close()
fileLetto.close()

Dato che vuoi fare delle operazioni su un file binario, alle aperture in lettura e scrittura devi aggiungere b. Quindi diventano rispettivamente "rb" e "wb".

Inoltre una volta aperti in binario quello che ottieni non sono più stringhe, ma oggetti di tipo bytes

Quella che segue potrebbe essere la struttura da cui partire:

fileLetto = open("filePartenza.txt", "rb")
fileScritto = open("fileArrivo.txt", "wb")

for linea in fileLetto:
lineaBytes = bytes(linea)
print(linea)
nuovaLinea = bytearray()
for b in lineaBytes:
print(hex(b))
if(b == 0xa):
b = 0x20

nuovaLinea.append(b)
print(nuovaLinea)
fileScritto.write(nuovaLinea)

fileScritto.close()
fileLetto.close()

Apriamo gli stessi due file di prima, ma questa volta invece di aprirli come testo li apriamo come file binari

leggiamo una riga del file di partenza e su questa leggiamo ogni singolo byte, quando trovi quello che vuoi cambiare lo sostituisci con quello che vuoi,

nell'esempio sopra sostituisco il ritorno a capo (su unix) con uno spazio, per cui ottengo un file con lo stesso contenuto di quello di partenza, ma tutto su una riga.
LeandroPaoloDP :ok:
Io in pratica vorrei creare uno Script che mi facesse aprire una finestra di selezione File dopo averlo aperto mi vada a cercare ad esempio alcune stringhe bit e me li vada a modificare e successivamente dovrebbe aprire una finestra per il salvataggio.



Chi riuscirebbe a crearlo?


Pagina: 1



Esegui il login per scrivere una risposta.