Byte-Daten schreiben
Verfasst: Sonntag 3. August 2025, 15:47
Hallo,
eigentlich habe ich schon Erfahrung beim Programmieren in anderen Sprachen, aber bei Python sehe ich für manche vermeintlich einfache Dinge große Probleme.
Ich möchte Daten aus einer Datei lesen und sie verändert in eine andere schreiben. Es handelt sich um eine WAV-Datei, ich möchte aber das wave.open an dieser Stelle nicht verwenden, u. a. weil es für 24 Bit etwas umständlich ist. Stattdessen würde ich gerne in eine Datei Byte für Byte schreiben:
Dies wäre erst einmal für den WAV-Header.
Das ergibt keine Fehlermeldung, aber die Datei ist mit 3 kB viel zu groß und sie beinhaltet lauter Nullwerte, obwohl der Print-Befehl eigentlich ordentliche Werte ausgibt:
0 82
1 73
2 70
3 70
4 36
5 249
...
41 249
42 21
43 0
Ferner musste ich binary.data mit bytes() casten, obwohl an anderer Stelle die Daten <class 'bytes'> ausweisen. Das bringt ohne bytes() aber eine Fehlermeldung, nämlich dass byte erwartet wird aber int geliefert wird.
Gibt es einfache Lösung?
Dieter
eigentlich habe ich schon Erfahrung beim Programmieren in anderen Sprachen, aber bei Python sehe ich für manche vermeintlich einfache Dinge große Probleme.
Ich möchte Daten aus einer Datei lesen und sie verändert in eine andere schreiben. Es handelt sich um eine WAV-Datei, ich möchte aber das wave.open an dieser Stelle nicht verwenden, u. a. weil es für 24 Bit etwas umständlich ist. Stattdessen würde ich gerne in eine Datei Byte für Byte schreiben:
Code: Alles auswählen
with open(Datei_neu, 'wb') as f:
for j in range(0,44,1):
print(j, binary_data[j])
f.write(bytes(binary_data[j]))
Das ergibt keine Fehlermeldung, aber die Datei ist mit 3 kB viel zu groß und sie beinhaltet lauter Nullwerte, obwohl der Print-Befehl eigentlich ordentliche Werte ausgibt:
0 82
1 73
2 70
3 70
4 36
5 249
...
41 249
42 21
43 0
Ferner musste ich binary.data mit bytes() casten, obwohl an anderer Stelle die Daten <class 'bytes'> ausweisen. Das bringt ohne bytes() aber eine Fehlermeldung, nämlich dass byte erwartet wird aber int geliefert wird.
Gibt es einfache Lösung?
Dieter