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(...)
で .