python - 如何在 Python 中对 Linux 设备文件执行低级 I/O?

标签 python linux posix

我有一个设备,它返回一个字符串来响应写入设备文件的命令。我能够向设备写入命令并使用 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)

写入成功,但返回空字符串。我在这里缺少什么?

最佳答案

根据os.write documentation :

Note: This function is intended for low-level I/O and must be applied to a file descriptor as returned by os.open() or pipe(). To write a “file object” returned by the built-in function open() or by popen() or fdopen(), or sys.stdout or sys.stderr, use its write() 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/

相关文章:

python - 如何让网络服务器响应本地网络之外的请求?

linux - 是否可以用 POSIX sh(1) 复制 cat(1)?

c - Linux 没有实现 POSIX 信号队列?

linux - 关于 pthread_create 和文件描述符,我可以假设什么?

python - 在 Bash 中安排 Python 脚本?

python - VS Code 中 anaconda 环境的“无法导入”错误

Python SQL - 一直说索引 8 'unsupported format character ' 处的 1' even all attributes' f' (0x66) 类型是正确的

python - 如何将多个文件添加到一个 zip 文件夹中

python - CalledProcessError : Command '(' grep', 'route' )' 返回非零退出状态 1

linux - 构建 cf-cli : go build runtime: linux/386 must be bootstrapped using make. bash 时出错