Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Python. Почему модуль subprocess выводит ошибки выполнения команды не полностью?  (Прочитано 1331 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Xyanight

  • Автор темы
  • Забанен
  • Участник
  • *
  • Сообщений: 147
  • Это просто какой-то Python!
    • Просмотр профиля
Устанавливаю несуществующий пакет "__.deb":

import subprocess

p = subprocess.Popen(["gksu", "dpkg -i /home/zavulon/Archive_Programs/Network_setting/wvdial/_______________.deb"], 
                     stdin=subprocess.PIPE, stdout=subprocess.PIPE)
out, err = p.communicate()
print out, err


Результат работы скрипта:

При обработке следующих пакетов произошли ошибки: /home/zavulon/Archive_Programs/Network_setting/wvdial/wvdialdedb.deb
None

Результат работы терминала:

dpkg: не удалось обработать параметр /home/zavulon/Archive_Programs/Network_setting/wvdial/__.deb (--install): нет доступа к архиву: No such file or directory
При обработке следующих пакетов произошли ошибки: /home/zavulon/Archive_Programs/Network_setting/wvdial/__.deb


Почему в работе скрипта выводится только последняя часть сообщения?
« Последнее редактирование: 09 Февраля 2014, 23:07:10 от Xyanight »
Это просто какой-то Python!

Оффлайн Master_Sergius

  • Активист
  • *
  • Сообщений: 528
  • i3
    • Просмотр профиля
Засуннь в трубу ещё ерроры, тобишь stderr в PIPE
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн Xyanight

  • Автор темы
  • Забанен
  • Участник
  • *
  • Сообщений: 147
  • Это просто какой-то Python!
    • Просмотр профиля
Master_Sergius,
Это не работает.
Это просто какой-то Python!

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Wars ~.o

Оффлайн Master_Sergius

  • Активист
  • *
  • Сообщений: 528
  • i3
    • Просмотр профиля
>>> import subprocess
>>> p = subprocess.Popen(["gksu", "dpkg -i /home/zavulon/Archive_Programs/Network_setting/wvdial/_______________.deb"],  stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> res = p.communicate()
>>> res
('', 'dpkg: error processing /home/zavulon/Archive_Programs/Network_setting/wvdial/_______________.deb (--install):\r\n cannot access archive: No such file or directory\r\nErrors were encountered while processing:\r\n /home/zavulon/Archive_Programs/Network_setting/wvdial/_______________.deb\r\n')
>>> len(res)
2


Ну вот же, вроде всё работает
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн Xyanight

  • Автор темы
  • Забанен
  • Участник
  • *
  • Сообщений: 147
  • Это просто какой-то Python!
    • Просмотр профиля
Master_Sergius,
Это не работает.
Результат твоего примера:
При обработке следующих пакетов произошли ошибки:
 /home/zavulon/Archive_Programs/Network_setting/wvdial/_______________.deb

В чем проблема ьожет быть?
Это просто какой-то Python!

Оффлайн Master_Sergius

  • Активист
  • *
  • Сообщений: 528
  • i3
    • Просмотр профиля
Хз... А версия какая?
п.с. Мб для таких вопросов лучше сразу на форум питонщиков? http://python.su/forum
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн Xyanight

  • Автор темы
  • Забанен
  • Участник
  • *
  • Сообщений: 147
  • Это просто какой-то Python!
    • Просмотр профиля
Master_Sergius,
Python27. Я уже с этим subprocess все варианты перепробовал - не работает.
Это просто какой-то Python!

Оффлайн Master_Sergius

  • Активист
  • *
  • Сообщений: 528
  • i3
    • Просмотр профиля
А можно увидеть здесь скрипт и способ запуска?
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Master_Sergius,
pkg -i ....deb 2>/tmp/err.log 1>/tmp/ok.log
Wars ~.o

Оффлайн Xyanight

  • Автор темы
  • Забанен
  • Участник
  • *
  • Сообщений: 147
  • Это просто какой-то Python!
    • Просмотр профиля
Master_Sergius,
Cкрипт все тот же, который я привел в вопросе темы. Или тот же, который привел ты. Я пишу для себя приложение которое автоматизирует работу с терминалом, набирая необходимые команды за меня, я лишь указываю тему. Например, удалить файл: програма предлогает выбрать файл и делает все автоматически. Если нужны права администратора, она выполняет команды под администратором. Было решено использовать модуль subprocess... Но с ним какие-то траблы, или у меня руки не из того места растут. Запускаю свои скрипты через gedit. Но, к слову, ни третий, ни второй Python? даже в консоли не выдают полный лог ошибки, который выводится в терминале после выполнения аналогичной команды по установке не существующего пакета :(

Пользователь решил продолжить мысль 11 Февраля 2014, 22:32:02:
victor00000,
Работает, спасибо большое. Не подскажите, где можно поподробнее узнать о вот таких вот тонкостях работы с терминалом? Я просто всего месяц с ним работаю :)

Пользователь решил продолжить мысль 11 Февраля 2014, 23:22:35:
victor00000,
Да рано я возрадовался. Ваш совет не дает результатов. Но он натолкнул меня на мысль, и вот, что поразительно! Если в команду


subprocess.Popen(["gksu", "dpkg -i /home/zavulon/Archive_Programs/Network_setting/wvdial/_______________.deb"],  stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

добавить лишний пробел перед "/home/zavulon/Archive.......", все чудно работает. Мистика!
« Последнее редактирование: 11 Февраля 2014, 23:24:01 от Xyanight »
Это просто какой-то Python!

 

Страница сгенерирована за 0.055 секунд. Запросов: 25.