Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中获取已执行命令的返回值_Python - Fatal编程技术网

如何在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
文件也在同一目录中。可能与