如何在Python中获取已执行命令的返回值
我试图获取如何在Python中获取已执行命令的返回值,python,Python,我试图获取shell命令的输出我试图使用python执行,但我得到了一个错误 如何从执行bash命令中获取响应/返回值 这就是我所做的: import subprocess import time # NAMESPACE = input("Namespace: ") # # Create a namespace # subprocess.call(["kubectl", "create", "namespace", NAMESPACE]) # build a docker image to
shell命令的输出
我试图使用python执行
,但我得到了一个错误
如何从执行bash命令中获取响应/返回值
这就是我所做的:
import subprocess
import time
# NAMESPACE = input("Namespace: ")
# # Create a namespace
# subprocess.call(["kubectl", "create", "namespace", NAMESPACE])
# build a docker image to deploy the application
DOCKER_OUTPUT = subprocess.call(["docker", "build", "-t", "banuka/node-web-app", "."])
print("Docker output is: " + DOCKER_OUTPUT)
不知何故,这会产生一个错误:
无法准备上下文:无法计算Dockerfile路径中的符号链接:lstat/home/jananath/Desktop/python脚本/Dockerfile:没有这样的文件或目录
回溯(最近一次呼叫最后一次):
文件“/home/jananath/Desktop/python script/bitesize platform troubleshooter/test/test.py”,第11行,在
打印(“Docker输出为:“+Docker\u输出”)
TypeError:只能将str(而不是“int”)连接到str
有人能帮我打印响应而不出现此错误吗(来自python)?系统命令的结果通常是一个与退出状态关联的整数。您可以执行
print(“Docker输出为:“+str(Docker\u输出)”)
将int转换为字符串,也可以使用其他Python字符串格式选项(取决于您的Python版本)
示例:f-string
print(f“Docker输出为{Docker\u输出”)
示例:.format()
打印(“Docker输出为{}”。格式化(Docker_输出))
如果您想要更详细的输出(即不只是零/非零退出状态),您可以执行以下操作:
cmd='docker build-t banuka/node web app'
p=Popen(cmd,shell=True,stdin=PIPE,stdout=PIPE,stderr=stdout,close_fds=True)
输出,err=p.communicate()
print('这是输出:{},这是错误:{}'。格式(输出,错误))
您不应该使用subprocess.call,它在旧的不推荐使用的API中
如果查找,可以找到此示例
>>> subprocess.run(["ls", "-l"]) # doesn't capture output
CompletedProcess(args=['ls', '-l'], returncode=0)
>>> subprocess.run("exit 1", shell=True, check=True)
Traceback (most recent call last):
...
subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
>>> subprocess.run(["ls", "-l", "/dev/null"], capture_output=True)
CompletedProcess(args=['ls', '-l', '/dev/null'], returncode=0,
stdout=b'crw-rw-rw- 1 root root 1, 3 Jan 23 16:23 /dev/null\n', stderr=b'')
捕获输出的正确方法如下:
out=subprocess.run(["ls", "-l","/foo/bar"], capture_output=True).stdout
确保您运行的是能够使用的最新版本的python和最新的函数集,因为它们更方便、更易于使用。dockerfile是否与python脚本位于同一目录中?是。当我在正常shell中运行命令时,在
D是的,python
文件也在同一目录中。可能与