Я пытаюсь получить некоторые зависимости на pacman, автоматизированном с помощью python. То, что я хочу выпустить в оболочке (и получить вывод) является:python: аргументы подпроцесса разделяют строки неправильно
pacman -Si [a_package] | grep Conflicts | awk -F: '{print $2}'
Так что это мой питон код:
getconflicts1 = "pacman -Si"
getconflicts2 = "| grep Conflicts | awk -F: '{print $2}'"
pkgs = # an example package list
for x in range (1,2):
getconflicts = getconflicts1 + pkgs[x] + getconflicts2
process2 = subprocess.Popen(getconflicts.split(), stdout=subprocess.PIPE)
conflicts = process2.communicate()[0]
print(conflicts)
Однако pacman говорит «неверный вариант - F», когда я используйте программу python, тогда как сама команда в командной строке работает.
Это:
print(getconflicts.split())
дает мне:
['pacman', '-Si', 'frameworkintegration', '|', 'grep', 'Conflicts', '|', 'awk', '-F:', "'{print", "$2}'"]
Я своего рода новичок в Python и подпроцессов в питона еще больше, так что у вас есть намек на то, как сделать это правильно?
связанный: [Как использовать subprocess.Popen для подключения нескольких процессов по трубам?] (Http://stackoverflow.com/q/295459/4279) – jfs
не ставьте решение в вопрос, размещайте его как ответ вместо этого. – jfs
Вопрос уже был дан, но я добавил решение вопроса, так как, по моему опыту, очень полезно иметь его и в сообщении. – larkey