Ajouter un os.lseek()
pour revenir au début de la chaîne que vous avez écrite. Actuellement, vous avez écrit 16 octets qui ont avancé le pointeur. Lorsque vous lisez, vous commencez à lire au pointeur actuel, vous devez donc le sauvegarder au début de ce que vous avez écrit.
Cela a fonctionné pour moi :
#!/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)
Selon le os.write
documents :
Remarque : Cette fonction est destinée aux E/S de bas niveau et doit être appliquée à un descripteur de fichier tel que renvoyé par
os.open()
oupipe()
. Pour écrire un "objet fichier" renvoyé par la fonction intégréeopen()
ou parpopen()
oufdopen()
, ousys.stdout
ousys.stderr
, utilisez sonwrite()
méthode.
Vous ne devriez pas mélanger et assortir ici. Si vous utilisez la fonction globale open()
pour ouvrir un fichier, vous devez uniquement utiliser le read()
de l'objet fichier et write()
méthodes. Inversement, si vous utilisez os.open()
pour ouvrir un fichier, alors vous ne devez utiliser que os.read()
et os.write()
.
Alors, essayez de remplacer votre appel par open()
avec os.open()
; ou, gardez le open()
appeler et remplacer os.write(dev, ...)
avec dev.write(...)
et remplacer os.read(dev, ...)
avec dev.read(...)
.