【发布时间】:2026-01-03 04:20:05
【问题描述】:
我有一个非常奇怪的问题。我有一些代码需要 Linux 文件描述符 (/dev/fd/N),其中 N 是某个数字。以下示例代码有效地演示了正在执行的操作。
为了运行代码,创建一个名为“/tmp/test”的文件,其中包含一些文本。
代码在 Python 2.6 中工作,但在 Python 2.7 或更高版本中,我得到:
cat: /dev/fd/4: No such file or directory
谁能弄清楚为什么?以下代码需要更改才能在 2.7 及更高版本上运行。假设我无法更改需要的文件描述符(例如 /dev/fd/4):
代码如下:
from subprocess import Popen, PIPE
data = Popen(
["cat"],
stdin=open('/tmp/test', 'rb'),
stdout=PIPE,
universal_newlines=True).stdout
fd_name = '/dev/fd/%d' % data.fileno()
fddata = Popen(
["cat",
fd_name],
stdout=PIPE,
universal_newlines=True,).stdout
print(fddata.read())
【问题讨论】:
标签: python python-2.7 subprocess popen python-2.6