【问题标题】:replace path in subprocess.check_output()替换 subprocess.check_output() 中的路径
【发布时间】:2014-04-16 09:49:50
【问题描述】:

我正在使用这个:

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

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

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

    您可以使用字符串格式:

    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;您可以通过单独传递参数来避免任何问题,并且使用外壳:

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

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

    【讨论】:

    • 非常感谢。有用!我花了很多时间寻找它。
    猜你喜欢
    • 2014-07-13
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2011-01-24
    • 2018-01-28
    • 1970-01-01
    相关资源
    最近更新 更多