子进程模块:使用带有tempfile对象的调用方法

时间:2009-06-26 15:10:43

标签: python subprocess

我已经使用临时文件库NamedTemporaryFile方法创建了临时命名文件。 我已写信给他们冲洗缓冲区,我没有关闭它们(否则它们可能会消失)

我正在尝试使用subprocess模块使用这些生成的文件调用一些shell命令。

subprocess.call('cat %s' % f.name)始终无法说明指定的临时文件不存在。

os.path.exists(f.name)始终返回true。 我可以直接从shell运行cat命令。

是否有某些原因subprocess模块无法使用临时文件?

有没有办法让它发挥作用?

提前致谢。

2 个答案:

答案 0 :(得分:3)

为什么不使用可选参数NamedTemporaryFile制作delete=False个?这样你就可以安全地关闭它们,知道它们不会消失,之后正常使用它们,并在你完成后明确取消链接。这样一切都将跨平台工作。

答案 1 :(得分:1)

您是否正在为子流程使用shell = True选项?