Přidejte os.lseek()
pro vyhledání zpět na začátek řetězce, který jste napsali. Aktuálně jste zapsali 16 bajtů, které posunuly ukazatel. Když čtete, začnete číst od aktuálního ukazatele, takže jej musíte zálohovat na začátek toho, co jste napsali.
Toto fungovalo pro mě:
#!/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)
Podle os.write
dokumentace:
Poznámka: Tato funkce je určena pro nízkoúrovňový I/O a musí být aplikována na deskriptor souboru vrácený
os.open()
nebopipe()
. Zapsat „objekt souboru“ vrácený vestavěnou funkcíopen()
nebopopen()
nebofdopen()
nebosys.stdout
nebosys.stderr
, použijte jehowrite()
metoda.
Neměli byste se zde míchat a porovnávat. Pokud použijete globální funkci open()
Chcete-li otevřít soubor, musíte použít pouze read()
objektu souboru a write()
metody. A naopak, pokud použijete os.open()
Chcete-li otevřít soubor, musíte použít pouze os.read()
a os.write()
.
Zkuste tedy nahradit volání na open()
s os.open()
; nebo ponechte open()
volání a nahraďte os.write(dev, ...)
s dev.write(...)
a nahraďte os.read(dev, ...)
s dev.read(...)
.