SS3*_*306 3 python ipc pipe popen
我已经看到很多stdout=file将重定向到文件的答案。但我有几个疑问。
为什么不起作用>file。
subprocess.Popen([SCRIPT, "R", ">", FILE, "2>", "/dev/null"])
Run Code Online (Sandbox Code Playgroud)这样可以吗
with open(FILE,'w+') as f:
subprocess.Popen([SCRIPT, stdout=f]
f.close()
Run Code Online (Sandbox Code Playgroud)就我而言,我尝试在无限循环中运行脚本(不会停止),并且有一些其他进程监视其输出。
即使 f 关闭后,脚本是否仍继续写入其中。如果是,它是如何工作的?
因为subprocess不允许使用>从文档重定向输出或错误消息:
\n\n\n\n\n
stdin,stdout并stderr分别指定执行的程序\xe2\x80\x99的标准输入、标准输出和标准错误文件句柄。有效值为PIPE、DEVNULL、现有文件描述符(正整数)、现有文件对象和None。\n\n
PIPE指示应创建一个通往子级的新管道。DEVNULL表示os.devnull将使用特殊文件。默认情况下None,不会发生重定向;child\xe2\x80\x99s 文件句柄将从父级继承。此外,
\nstderrcan beSTDOUT,这表明来自应用程序的 stderr 数据应该被捕获到与stdout.
并且您应该使用以下代码:
\n\nwith open(FILE, \'w+\') as f:\n subprocess.Popen([SCRIPT, \'R\'], stdout=f, stderr=subprocess.DEVNULL))\nRun Code Online (Sandbox Code Playgroud)\n\n因为您正在使用with,所以不需要关闭该文件。
| 归档时间: |
|
| 查看次数: |
2934 次 |
| 最近记录: |