Использование подпроцесса Python вместо os.system

1

Следуя советам Ignacio (Python удаляет пробелы и добавляет). Я пытаюсь преобразовать приведенную ниже команду, чтобы использовать subprocess, а не os.system.

script: os.system("/usr/local/bin/growlnotify -n emesene -a emesene -t """+title+""" -m """+text+"""""")

Я бы подумал: subprocess.call(['/usr/local/bin/growlnotify', '-n emesene', '-a emesene', '-t ""+title+"""', '-m """+text+"""""'], shell=True)

Но это не работает. Любые идеи, как заставить это работать? Я просмотрел документы Python и посмотрел здесь, но я не могу понять это!

BTW title и text являются переменными из системы уведомлений мессенджеров emesene

  • 0
    рассмотреть возможность принять ответ Игнасио в связанном вопросе.
  • 0
    К сожалению, я думал.
Теги:
subprocess
os.system

2 ответа

4
Лучший ответ

Вы не хотите "shell=True" при использовании списка для передачи команды. Я бы просто прокомментировал это на пост Джереми Бэнкса (поскольку его высказывание на shlex.split наиболее примечательно), но в настоящее время я не могу повторить это:/

subprocess.call(['/usr/local/bin/growlnotify', '-n',  'emesene', '-a', 'emesene', '-t', title, '-m', text])
  • 0
    Работает отлично, спасибо!
5

Вместо

subprocess.call(['/usr/local/bin/growlnotify', '-n emesene', '-a emesene', '-t ""+title+"""', '-m """+text+"""""'], shell=True)

использование

subprocess.call(['/usr/local/bin/growlnotify', '-n',  'emesene', '-a', 'emesene', '-t', title, '-m', text], shell=True)

Всюду, где у вас есть незанятое пространство в команде оболочки, разделите другой элемент списка.

Функция shlex.split может использоваться для преобразования из команды стиля shell- в список ожидаемых подпрограмм сортировки.

  • 0
    Не работает Дает пустое уведомление, так что я думаю, что он не принимает переменные.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню