gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:12:48 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com