Agrega un os.lseek()
para buscar de nuevo al principio de la cadena que escribió. Actualmente escribiste 16 bytes que avanzaron el puntero. Cuando lee, comienza a leer en el puntero actual, por lo que debe retroceder hasta el comienzo de lo que escribió.
Esto funcionó para 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)
Según el os.write
documentación:
os.open()
o pipe()
. Para escribir un "objeto de archivo" devuelto por la función integrada open()
o por popen()
o fdopen()
o sys.stdout
o sys.stderr
, usa su write()
método.
No deberías estar mezclando y combinando aquí. Si usa la función global open()
para abrir un archivo, solo debe usar el read()
del objeto de archivo y write()
métodos. Por el contrario, si usa os.open()
para abrir un archivo, solo debe usar os.read()
y os.write()
.
Entonces, intente reemplazar su llamada a open()
con os.open()
; o mantenga el open()
llame y reemplace os.write(dev, ...)
con dev.write(...)
y reemplaza os.read(dev, ...)
con dev.read(...)
.