- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个设备,它返回一个字符串来响应写入设备文件的命令。我能够向设备写入命令并使用 C 语言读取返回字符串,代码如下所示:
int dev = open("/dev/USBDev251", O_RDWR);
write(dev, data, sizeof(data));
read(dev, buff, 16);
我正在尝试用 Python 做同样的事情:
dev = os.open("/dev/USBDev251", os.O_RDWR)
os.write(dev, data)
os.read(dev, 16)
写入成功,但返回空字符串。我在这里缺少什么?
最佳答案
Note: This function is intended for low-level I/O and must be applied to a file descriptor as returned by
os.open()
orpipe()
. To write a “file object” returned by the built-in functionopen()
or bypopen()
orfdopen()
, orsys.stdout
orsys.stderr
, use itswrite()
method.
你不应该在这里混搭。如果你使用全局函数open()
打开一个文件,那么你必须只使用文件对象的read()
和write()
方法。相反,如果您使用 os.open()
打开一个文件,那么您必须只使用 os.read()
和 os.write()
.
因此,尝试用 os.open()
替换对 open()
的调用;或者,保留 open()
调用,并将 os.write(dev, ...)
替换为 dev.write(...)
并将 os.read(dev, ...)
替换为 dev.read(...)
。
关于python - 如何在 Python 中对 Linux 设备文件执行低级 I/O?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21424393/
我是一名优秀的程序员,十分优秀!