gpt4 book ai didi

python - 使用 Subprocess 从 python 运行终端命令

转载 作者:太空宇宙 更新时间:2023-11-04 02:42:40 24 4
gpt4 key购买 nike

我正在尝试从我的 django 运行终端命令但出现错误。

这是我要运行的命令:

kubectl apply -f <(istioctl kube-inject -f FILE_PATH)

这是我尝试过的:来自 views.py

nodesvc = subprocess.call('kubectl apply -f <(istioctl kube-inject -f ' + os.path.join(path) + '/nodeService.yaml)',
shell=True)

我在临时目录中创建一个文件并在此处传递它的路径,这是正确的。

这是错误:

/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `kubectl apply -f <(istioctl kube-inject -f /var/folders/g2/8fzl8mjj5xxfqdfvrl7v3q_40000gn/T/tmpstfcq3es/nodeService.yaml)'

我认为大括号 '(' 有问题,我该如何解决这个问题,请帮助我!提前致谢!

最佳答案

问题是 python 正在调用的任何 shell 都不支持通过 <(..) 进行进程替换。 .什么对我有用:

subprocess.call(["/bin/bash", "-c", "wc -l <(sort something.txt)"])

这强制将 shell 调用为 bash,它通常支持进程替换。对于您的命令,这应该有效:

subprocess.call(["/bin/bash", "-c", 'kubectl apply -f <(istioctl kube-inject -f ' + os.path.join(path) + '/nodeService.yaml)'])

编辑:适应问题

关于python - 使用 Subprocess 从 python 运行终端命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46034628/

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