Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以获取Python的文件描述符';斯特里尼奥是谁?_Python - Fatal编程技术网

可以获取Python的文件描述符';斯特里尼奥是谁?

可以获取Python的文件描述符';斯特里尼奥是谁?,python,Python,在Python脚本中,我想向子流程提供一些小字符串数据,但所述子流程不可协商地只接受文件名作为参数,它将打开并读取该文件名。我不想将这些数据写入磁盘,因为它应该只驻留在内存中 我的第一反应是使用StringIO,但我意识到StringIO没有fileno()mmap(-1,…)似乎也不会创建文件描述符。有了这些,我不知道该怎么做。这甚至可以实现吗?fd将在操作系统级别可见,但(我希望)仅对进程的子进程可见 tl;dr如何为只有子进程才能看到的python字符串/内存创建私有文件描述符 另外,这些

在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完全按照我所希望的那样工作