可以获取Python的文件描述符';斯特里尼奥是谁?
在Python脚本中,我想向子流程提供一些小字符串数据,但所述子流程不可协商地只接受文件名作为参数,它将打开并读取该文件名。我不想将这些数据写入磁盘,因为它应该只驻留在内存中 我的第一反应是使用可以获取Python的文件描述符';斯特里尼奥是谁?,python,Python,在Python脚本中,我想向子流程提供一些小字符串数据,但所述子流程不可协商地只接受文件名作为参数,它将打开并读取该文件名。我不想将这些数据写入磁盘,因为它应该只驻留在内存中 我的第一反应是使用StringIO,但我意识到StringIO没有fileno()mmap(-1,…)似乎也不会创建文件描述符。有了这些,我不知道该怎么做。这甚至可以实现吗?fd将在操作系统级别可见,但(我希望)仅对进程的子进程可见 tl;dr如何为只有子进程才能看到的python字符串/内存创建私有文件描述符 另外,这些
StringIO
,但我意识到StringIO
没有fileno()
mmap(-1,…)
似乎也不会创建文件描述符。有了这些,我不知道该怎么做。这甚至可以实现吗?fd将在操作系统级别可见,但(我希望)仅对进程的子进程可见
tl;dr如何为只有子进程才能看到的python字符串/内存创建私有文件描述符
另外,这些都是Linux上的,不需要以任何方式进行移植。具体化@user4815162342的评论作为回答: 实现这一点的直接方法是:
- 将
作为文件参数传递给进程李>/dev/stdin
- 使用
李>stdin=subprocess.PIPE
- 最后,
提供所需内容Popen.communicate()
/dev/stdin
,并将数据提供给子进程的stdin
。您的Linux系统肯定至少安装了一个tmpfs(RAMdisk)文件系统-/tmp或/var/run。把你的文件写在那里,大家都很高兴。@user4815162342谢谢!我不知道/dev/stdin,它通过PIPE和Popen.communicate完全按照我所希望的那样工作