这会打印目录大小,但是如何将输出保存到python变量而不是print。
svn list -vR http://myIP/repos/test | awk '{sum+=$3; i++} END {print sum/1024000}'
但我需要将此打印存储在python变量中;
proc = subprocess.Popen(svnproc, stdout=subprocess.PIPE, shell=True)
output = proc.stdout.read()
Print str(output)
讨厌的解决方法是将其推送到文件并捕获文件
svn list -vR http://myIP/repos/test | awk '{sum+=$3; i++} END {> /tmp/output.txt}'
答案 0 :(得分:0)
来自" subprocess"的精细文档字符串我可以读到:
更换壳管线
输出=
dmesg | grep hda
p1 = Popen(["dmesg"], stdout=PIPE)
p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0]
因此,在您的情况下,我会尝试以下代码
switches = ...
directory = ...
p1 = Popen(["svn", "list", switches, directory], stdout=PIPE)
p2 = Popen(["awk", "{sum+=$3; i++} END {print sum/1024/1024}", stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0].strip()
ps:我已经从sum/1024000
更改为sum/1024/1024
,假设您想以兆字节为单位
"
答案 1 :(得分:0)
svnproc = "svn list -vR " + repoURL + " | awk '{sum+=$3; i++} END {print sum/1073741824}'"
proc = subprocess.Popen(svnproc, shell=True,
stdout=subprocess.PIPE)
svnbackupsize = float(proc.stdout.read())
这个脚本唯一有问题的部分是Popen不会等到进程完成,但是subprocess.call会等到进程完成。