gpt4 book ai didi

python - 我如何格式化命令参数,它们本身是一组带有 Python 子进程模块的命令?

转载 作者:行者123 更新时间:2023-11-28 17:15:22 26 4
gpt4 key购买 nike

在内部运行的命令 MyCWD (变量捕获工作目录): vagrant ssh -c "cd /Path/To/Dir && ./my-shell-script.sh -d argD -f argF"

我尝试这样做但没有成功:

vagrantCmd = ['vagrant','ssh','-c', 
'cd', '/Path/To/Dir', '&&',
'./my-shell-script.sh', '-d', '-argD', '-f', 'argF']

output,error = subprocess.Popen(command, universal_newlines=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=MyCWD).communicate()

但是,如果我这样做,它就会起作用:

argCmd = ['cd', '/Path/To/Dir', '&&', 
'./my-shell-script.sh', '-d', '-argD', '-f', 'argF']
os.chdir(MyCWD)
os.system('vagrant ssh -c "%s"' % ' '.join(argCmd))

后者似乎容易很多,但是os.system不再推荐。我怎样才能让它与 subprocess.Popen() 一起工作? ?

我根据一些设置构建了数组 ( argCmd )。基本上我构建了这样的数组,然后尝试将它们传递给 subprocess.Popen但是这种奇怪的字符串构建总是让我对那个模块感到震惊,但是对于 os.system 来说却微不足道。 .你如何使用字符串和 subprocess有效吗?

最佳答案

您对 Python 代码做了什么:

vagrant ssh -c cd /Path/To/Dir && ./my-shell-script.sh -d argD -f argF

你需要什么:

vagrant ssh -c "cd /Path/To/Dir && ./my-shell-script.sh -d argD -f argF"

如何解决?

vagrantCmd = ['vagrant','ssh','-c', 
' '.join(['cd', '/Path/To/Dir', '&&',
'./my-shell-script.sh', '-d', '-argD', '-f', 'argF'])]

关于python - 我如何格式化命令参数,它们本身是一组带有 Python 子进程模块的命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44530882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com