GNU/Linux >> Znalost Linux >  >> Linux

Jak provedu I/O nízké úrovně na souboru zařízení Linux v Pythonu?

Přidejte os.lseek() pro vyhledání zpět na začátek řetězce, který jste napsali. Aktuálně jste zapsali 16 bajtů, které posunuly ukazatel. Když čtete, začnete číst od aktuálního ukazatele, takže jej musíte zálohovat na začátek toho, co jste napsali.

Toto fungovalo pro 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)

Podle os.write dokumentace:

Poznámka: Tato funkce je určena pro nízkoúrovňový I/O a musí být aplikována na deskriptor souboru vrácený os.open() nebo pipe() . Zapsat „objekt souboru“ vrácený vestavěnou funkcí open() nebo popen() nebo fdopen() nebo sys.stdout nebo sys.stderr , použijte jeho write() metoda.

Neměli byste se zde míchat a porovnávat. Pokud použijete globální funkci open() Chcete-li otevřít soubor, musíte použít pouze read() objektu souboru a write() metody. A naopak, pokud použijete os.open() Chcete-li otevřít soubor, musíte použít pouze os.read() a os.write() .

Zkuste tedy nahradit volání na open() s os.open(); nebo ponechte open() volání a nahraďte os.write(dev, ...) s dev.write(...) a nahraďte os.read(dev, ...) s dev.read(...) .


Linux
  1. Linux – Určení konkrétního souboru odpovědného za vysoké I/O?

  2. Linux – proč `/dev/ptmx` a `/dev/pts/ptmx` nejsou soubory zařízení?

  3. Jak přejmenovat soubor v Linuxu?

  1. Jak děláte neblokující I/O konzoly na Linuxu v C?

  2. Jak zastavit „nepřerušitelný“ proces v Linuxu?

  3. Jak vyčistit diskové I/O mezipaměti v Linuxu?

  1. Jak spustit soubor python v linuxu

  2. Jak zpřístupnit můj modul Python v systému Linux?

  3. Jak detekovat stisknutí kláves na linuxovém terminálu, nízkoúrovňový styl v pythonu