Tambahkan os.lseek()
untuk mencari kembali ke awal string yang Anda tulis. Saat ini Anda menulis 16 byte yang memajukan pointer. Saat Anda membaca, Anda mulai membaca pada penunjuk saat ini sehingga Anda perlu mencadangkannya ke awal dari apa yang Anda tulis.
Ini berhasil untuk saya:
#!/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)
Menurut os.write
dokumentasi:
Catatan: Fungsi ini ditujukan untuk I/O tingkat rendah dan harus diterapkan ke deskriptor file seperti yang dikembalikan oleh
os.open()
ataupipe()
. Untuk menulis "objek file" yang dikembalikan oleh fungsi bawaanopen()
atau denganpopen()
ataufdopen()
, atausys.stdout
atausys.stderr
, gunakanwrite()
nya metode.
Anda tidak boleh mencampur dan mencocokkan di sini. Jika Anda menggunakan fungsi global open()
untuk membuka file, maka Anda hanya boleh menggunakan read()
objek file dan write()
metode. Sebaliknya, jika Anda menggunakan os.open()
untuk membuka file, maka anda hanya perlu menggunakan os.read()
dan os.write()
.
Jadi, coba ganti panggilan Anda ke open()
dengan os.open()
; atau, simpan open()
panggil, dan ganti os.write(dev, ...)
dengan dev.write(...)
dan ganti os.read(dev, ...)
dengan dev.read(...)
.