subprocess模块:使用call方法与tempfile对象
我创建了一些临时的命名文件,使用的是tempfile库里的NamedTemporaryFile方法。
我已经往这些文件里写入了内容,并且刷新了缓存,但我没有关闭它们(否则文件可能会消失)。
我想用subprocess
模块来调用一些命令行指令,使用这些生成的文件。
但是每次运行subprocess.call('cat %s' % f.name)
时,都会失败,提示说这个命名的临时文件不存在。
而用os.path.exists(f.name)
检查时,总是返回真。我可以直接在命令行中运行cat命令来查看这个文件。
请问有没有什么原因导致subprocess
模块无法与临时文件一起使用?
有没有办法让它正常工作?
谢谢大家!
2 个回答
3
你为什么不在创建NamedTemporaryFile
的时候加上可选参数delete=False
呢?这样的话,你就可以放心地关闭这些临时文件,因为它们不会自动消失。之后你可以正常使用这些文件,等用完了再手动删除它们。这样做的话,所有操作在不同的系统上也都能正常运行。
1
你在使用子进程的时候,有没有选择shell=True这个选项?