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

String conversion issue with string variable in subprocess

我对子流程很不满意。 我的底线有问题,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

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

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