LINUX.ORG.RU

Вызов сторонней программы в python

 


0

1

Через subprocess.call нужно вызвать eix в следующем виде:

FORMAT='<category>/<name>\n' eix -e <аргумент>

но модуль не может найти команду FORMAT='<category>/<name>\n' и завершается с ошибкой, а если переставить FORMAT='<category>/<name>\n' в другое место (например, так: eix -e FORMAT='<category>/<name>\n' <аргумент> или eix -e <аргумент> FORMAT='<category>/<name>\n'), то eix не понимает такого запроса и ничего не может найти. Пока сделал костыль в виде bash-скрипта:

#!/bin/bash

FORMAT='<category>/<name>\n' eix -e "$1"

а в питоно-скрипте вызываю уже его:

subprocess.call(['/media/mix/data/Dox/portscriptum.py/eix-cat-name.sh', sys.argv[1]])

но это как-то вообще криво, нет ли более изящных способов?

Я ничего не понял, но может тебе стоит использовать raw strings?

kernelpanic ★★★★★
()

Может так?

#!/usr/bin/python
import os, subprocess

env = os.environ.copy()
env['FORMAT']='<category>/<name>'
subprocess.call('/bin/env', env=env)

Lavos ★★★★★
()
Последнее исправление: Lavos (всего исправлений: 1)
p=subprocess.Popen([cmd], stdout=subprocess.PIPE)
p.communicate()
AGUtilities ★★★
()
Ответ на: комментарий от Siado

Слушай, оно мне в довесок к выводу eix'а пишет нуль с новой строки. Как это убрать?

Kindly_Cat
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.