Fügen Sie ein os.lseek()
hinzu um zum Anfang der von Ihnen geschriebenen Zeichenfolge zurückzusuchen. Derzeit haben Sie 16 Bytes geschrieben, die den Zeiger vorrücken. Wenn Sie lesen, beginnen Sie mit dem Lesen am aktuellen Zeiger, also müssen Sie ihn bis zum Anfang des Geschriebenen zurücksetzen.
Das hat bei mir funktioniert:
#!/usr/bin/python
import os
data = "xxxxxxxxxxxxxxxx"
dev = os.open("/dev/sdp1", os.O_RDWR)
os.write(dev,data)
os.lseek(dev,0,os.SEEK_SET)
print os.read(dev,16)
Gemäß os.write
Dokumentation:
Hinweis: Diese Funktion ist für Low-Level-E/A gedacht und muss auf einen Dateideskriptor angewendet werden, wie er von os.open()
zurückgegeben wird oder pipe()
. Um ein „Dateiobjekt“ zu schreiben, das von der eingebauten Funktion open()
zurückgegeben wird oder per popen()
oder fdopen()
, oder sys.stdout
oder sys.stderr
, verwenden Sie dessen write()
Methode.
Sie sollten hier nicht mischen und anpassen. Wenn Sie die globale Funktion open()
verwenden Um eine Datei zu öffnen, müssen Sie nur den read()
des Dateiobjekts verwenden und write()
Methoden. Umgekehrt, wenn Sie os.open()
verwenden Um eine Datei zu öffnen, müssen Sie nur os.read()
verwenden und os.write()
.
Versuchen Sie also, Ihren Aufruf durch open()
zu ersetzen mit os.open()
; oder behalten Sie open()
bei aufrufen und os.write(dev, ...)
ersetzen mit dev.write(...)
und ersetzen Sie os.read(dev, ...)
mit dev.read(...)
.