GNU/Linux >> Linux の 問題 >  >> Linux

Python で Linux デバイス ファイルに対して低レベルの I/O を実行するにはどうすればよいですか?

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


Linux
  1. Linuxでファイルの名前を変更するにはどうすればよいですか?

  2. Linuxで「中断できない」プロセスを停止するには?

  3. Linux で Python モジュールをシステム全体で利用できるようにするにはどうすればよいですか?

  1. Linux でデバイスをマウントするには?

  2. Linux:/dev/console 、 /dev/tty 、 /dev/tty0 の違い

  3. I/Oエラーの原因となる特殊ファイル

  1. / dev / stdin、/ dev / stdout、および/ dev / stderrはどの程度移植可能ですか?

  2. Linux –高I / Oの原因となる特定のファイルを決定しますか?

  3. Linux – `/ dev/ptmx`と`/dev / pts / ptmx`がデバイスファイルではないのはなぜですか?