Я хочу запустить скрипт Python, который производит настольное уведомление на запуске в Ubuntu 12.04. Как я могу сделать это?
Я попробовал некоторые распространенные способы. На запуске в "PS aux" управляют, чтобы моя программа была перечислена, но никакой графический интерфейс не замечен. Нормальные запущенные скрипты, но сценарии с графической позой / сетевым интерфейсом создают проблему.
import codecs
import time
import urllib2
import os
st = "NULL"
date = time.strftime("%d-%m")
try:
st = urllib2.urlopen("XYZ.html").read()
except:
pass
if st != "NULL":
st.split("XYZ")[0].split("</table>")[0]
if date in st:
new = st.split(date)[1:]
events = ""
for j in new:
events += (j.split("</td><td>")[1].split("</td></tr>")[0] + "\n")
events = events[:-1]
else:
events = "Nothing special"
to_send = "notify-send -i A/B/C.ico " + "'Calender " + date + "-2015' '" + events +"'"
os.system(to_send)
else:
to_send = "notify-send -i A/B/C.ico " + "'Calender " + date + "-2015' 'Check Internet connection'"
os.system(to_send)
exit(0)
, Это обычно - один из этих случаев, где команда повреждается, если это работает слишком скоро в журнале в процессе. Рабочий стол еще не полностью загружается ответ, команда не может быть выполнена.
Добавляют к Вашим Приложениям Запуска повреждение, прежде чем сценарий запустится, и он будет хорошо работать:
/bin/bash -c "sleep 15 && python2 /path/to/script.py"
я протестировал Ваш сценарий и с и без повреждения и действительно перестал работать, если я выполнил его без, но успешно выполнился с повреждением.
#!/usr/bin/env python
), Вы должны , предшествуют пути к сценарию python
для выполнения ее. Неважно, если это - исполняемый файл или нет. В более медленных системах (или в VM), повреждение 15 секунд не могло бы быть достаточным. Раз так попытайтесь запуститься с относительно длинного повреждения, экспериментируя "вниз" к пределу.
О сценарии; действительно не изучал его, но я определенно не буду использовать os.system
больше, использовать subprocess.Popen()
вместо этого, и о, можно сохранить строку путем удаления первого os.system(to_send)
, и не-располагают с отступом второй, так как Вы выполните команду в обоих случаях после if
/ else
маршрут. :)