首页 > 解决方案 > subprocess.check_output 追加 \n 即使字符串不包含它

问题描述

使用 Python,我正在尝试运行以下git命令。

import subprocess

output = subprocess.check_output(["git", "rev-parse", "--short=7", "HEAD"])
commit = output.decode("utf-8")
print("Repo is on commit ", commit)

# Works well until here but in the below line it fails to understand commit
version = subprocess.check_output(['git', 'describe', '--tags', f'{commit}'])

问题:
它工作得很好,但最后一行。即使变量具有正确的值,第二次调用subprocess.check_output也不能很好地理解。它抱怨以下错误:commitcommit

subprocess.CalledProcessError: Command '['git', 'describe', '--tags', '6959fdf\n']' returned non-zero exit status 128.

没有上面几行即使打印正确也\n存在。commitcommit\n

标签: pythonpython-3.xgitsubprocess

解决方案


output(从subprocess.check_output(…)有换行符。把它去掉:

commit = output.strip().decode("ascii")

推荐阅读