subprocess.check_output не работает в Python 3, но работает в Python 2.7 - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть следующий код, который дал мне правильные результаты 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')

Ответы [ 2 ]

1 голос
/ 05 ноября 2019

Я преобразовал строку байта в обычную строку, и теперь она работает.

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')
0 голосов
/ 04 ноября 2019

Попробуйте вместо этого сделать submodule_commit.split(b'\n'). b'xxxxxxx\nyyyyyyy' является байтовой строкой, и ваш метод разделения также должен принимать входную байтовую строку. Чтобы преобразовать '\n' в байтовую строку, вы пишете b'\n'. Я дам мне знать, если это работает. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...