子进程中字符串变量的字符串转换问题

时间:2018-03-10 11:55:34

标签: python-2.7 subprocess string-formatting

我对子进程非常不满意。 我的底线,subprocess.call有问题,让源和目标变量起作用。

import subprocess, argparse

parser = argparse.ArgumentParser()
parser.add_argument("-t", '--path_to_torfs', type=str)
parser.add_argument("-w", '--path_to_wips', type=str)
parser.add_argument("-n", '--number_in_each_wip', type=str)

args = parser.parse_args()

source = args.path_to_torfs
destination = args.path_to_wips


subprocess.call(['sudo', 'mv', '`ls %s -v1 | head -2`', '%s' % (source, destination)])

我的错误是:

TypeError: not all arguments converted during string formatting

1 个答案:

答案 0 :(得分:0)

subprocess.call中,您提供了4个字符串的列表,第3个字符串有一个占位符但没有参数,第4个字符串也有一个占位符和两个参数。 解决方案是提供适当位置的论据:

subprocess.call(['sudo', 'mv', '`ls %s -v1 | head -2`' % (source), '%s' % (destination)])