os.lseek() を追加 書き込んだ文字列の先頭に戻ります。現在、ポインタを進める 16 バイトを書き込みました。読むときは、現在のポインターから読み始めるので、書いたものの先頭までバックアップする必要があります。
これは私のために働いた:
#!/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)
os.writeによると ドキュメント:
注: この関数は低レベルの I/O を対象としており、os.open() によって返されるファイル記述子に適用する必要があります。 または pipe() .組み込み関数 open() によって返される「ファイル オブジェクト」を書き込むには または popen() で または fdopen() 、または sys.stdout または sys.stderr 、その write() を使用します メソッド。
ここで混ぜ合わせてはいけません。グローバル関数 open() を使用する場合 ファイルを開くには、ファイル オブジェクトの read() のみを使用する必要があります と write() メソッド。逆に os.open() を使うと ファイルを開くには、 os.read() のみを使用する必要があります と os.write() .
したがって、呼び出しを open() に置き換えてみてください os.open() で;または、open() のままにします os.write(dev, ...) を呼び出して置き換えます dev.write(...) で os.read(dev, ...) を置き換えます dev.read(...) で .