繁体   English   中英

如何在 popen() 中使用 python 变量?

[英]How do you use a python variable in popen()?

我正在尝试为mydata目录中的每个文件记录 docker 统计信息。 例如,如果其中一个文件名为piano.txt ,我希望 output 文件为piano_stuff.txt 这是我到目前为止所拥有的:

import subprocess
import signal
import os 

for file_name in os.listdir('mydata'):
    data_txt = "./" + file_name.split(".")[0] + "_stuff.txt"
    dockerStats = subprocess.Popen("docker stats  --format {{.MemUsage}} >> ${data_txt}", shell=True)
    os.killpg(os.getpgid(dockerStats.pid), signal.SIGTERM) 

不要使用shell=True 在本地打开文件,并将文件 object 作为stdout参数传递。 您还可以使用--no-stream选项在生成一行 output 后退出命令,而不是尽快异步尝试终止进程。 (您可能会得到多行 output,也可能什么都没有,具体取决于操作系统安排 Docker 进程运行的时间。)

with open(data_txt, "a") as f:
    subprocess.run(["docker", "stats", "--format", "{{.MemUsage}}", "--no-stream"], stdout=f)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM