Следуя советам 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
Вы не хотите "shell=True" при использовании списка для передачи команды. Я бы просто прокомментировал это на пост Джереми Бэнкса (поскольку его высказывание на shlex.split наиболее примечательно), но в настоящее время я не могу повторить это:/
subprocess.call(['/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)
использование
subprocess.call(['/usr/local/bin/growlnotify', '-n', 'emesene', '-a', 'emesene', '-t', title, '-m', text], shell=True)
Всюду, где у вас есть незанятое пространство в команде оболочки, разделите другой элемент списка.
Функция shlex.split может использоваться для преобразования из команды стиля shell- в список ожидаемых подпрограмм сортировки.