![PYファイルを介してBashコマンドを実行するには? [繰り返し]](https://linux33.com/image/151252/PY%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BB%8B%E3%81%97%E3%81%A6Bash%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F%20%5B%E7%B9%B0%E3%82%8A%E8%BF%94%E3%81%97%5D.png)
/usr/lib/python2.7/dist-packages/Mailnag/plugins/libnotifyplugin.py
次のPythonスクリプトは、コマンドが('zenity --info --text="You got new mail"')
実行されていないスクリプトから抽出されます。どのように機能させますか?mail_count > 0
以下の行が機能したらif mail_count > 1:
実行したいと思います。
if mail_count > 0:
import os
os.system('zenity --info --text="You got new mail"')
if mail_count > 1:
summary = _("{0} new mails").format(str(mail_count))
if (mail_count - i) > 1:
body = _("from {0} and others.").format(senders)
else:
body = _("from {0}.").format(senders)
else:
summary = _("New mail")
body = _("from {0}.").format(senders)
次の「Testing.py」スクリプトを入れて/usr/lib/python2.7/dist-packages/Mailnag/plugins/Testing.py
実行しましたが、実際に「新しいメールがあります」というメッセージが表示されました。
#!/usr/bin/env python2
import os
os.system('zenity --info --text="You got new mail"')
答え1
sysコマンドの出力をキャプチャする必要がないのでos.system
大丈夫です。
アップロードしたコードは問題ないようですが、zenity
pythonスクリプトが実行されているパスで実行されているコマンドが利用可能かどうかを推測してください。
出力が有効であることを確認するには、次のようにします。
if mail_count > 0:
import os
result = os.system('echo "more than 0" > testfile')
if result == 0:
print("a testfile was created")
コマンドがテストファイルを生成すると、問題が解決したことがわかりますzenity
。
ノート
これは良い練習、import
文は可能であれば、文書の先頭に配置するのが最善です。