确定SVN目录的总大小并存储在python变量中

时间:2014-09-22 17:26:13

标签: python awk

这会打印目录大小,但是如何将输出保存到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}'

2 个答案:

答案 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会等到进程完成。