subprocess.check_output在pythong 3中无效,但在python 2.7中有效

问题描述 投票:0回答:2

我有以下代码,为我提供了python 2.7的正确结果,但是一旦我移植到python 3,该代码将无法正常工作。我可以在变量submodule_commit中看到正确的结果,但它们类似于b'xxxxxxx\nyyyyyyy',并且拆分不再起作用。我不明白,这里哪里错了。我的期望是包含子模块的列表。

command = "git submodule status | awk '{print $1}'"
submodule_commit = subprocess.check_output(command, shell=True)
submodule_commit = submodule_commit.split('\n')
python-3.x subprocess
2个回答
0
投票

尝试改用submodule_commit.split(b'\n')b'xxxxxxx\nyyyyyyy'是一个字节字符串,并且您的拆分方法还应该将一个字节字符串输入。要将'\n'转换为字节字符串,请改写b'\n'。我让我知道是否可行。 :)


0
投票

我将字节字符串转换为普通字符串,现在可以正常工作。

command = "git submodule status | awk '{print $1}'"
submodule_commit = subprocess.check_output(command, shell=True)
submodule_commit = str(submodule_commit, 'utf-8')
submodule_commit = submodule_commit.split('\n')
© www.soinside.com 2019 - 2024. All rights reserved.