替换subprocess.check_output()中的路径

时间:2014-04-16 09:49:50

标签: python python-2.7

我正在使用这个:

output2 = subprocess.check_output("find /users/experiment_in14 -empty", shell=True)

这对我来说非常有用,但我想替换完整路径,以便在代码开头只更改一次路径,而不是到处都是。 我在想这样的事情:

original = /users/experiment_in14 
output2 = subprocess.check_output("find ,original, -empty", shell=True)
print output2

但它不起作用。这是替换路径的正确方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用字符串格式:

original = "/users/experiment_in14"
output2 = subprocess.check_output("find {} -empty".format(original), shell=True)
print output2

但是你需要注意包含shell元字符的路径。您必须确保路径不使用元字符或显式quote the value

import pipes

original = "/users/experiment_in14"
output2 = subprocess.check_output("find {} -empty".format(pipes.quote(original)), shell=True)
print output2

您实际上并不需要在此使用shell=True;你可以通过单独传递参数并且使用shell来阻止任何问题:

original = "/users/experiment_in14"
output2 = subprocess.check_output(['find', original, '-empty'])
print output2

此处original只是一个单独的参数,不需要引用。