私は、AppleScriptを使ってみましたが、マウスやキーボードにアクセスでき、Pythonを使ってOSX上のアプリケーションを自動化できるかどうか疑問に思っていました。 ?私はpyauto
を見つけました。他にも良いPythonライブラリがあれば、OSX自動化のためのモジュールを教えてください。どのPythonモジュール、ライブラリがOSX Automationで利用できますか?
答えて
私もpythonの中で 'applescript'を使う良いpythonモジュールを探しています。実際これが私がここに来た方法です。私は何かを見つけることができませんでしたので、私は自分自身の解決策を考えなければなりませんでした。
私にとってうまくいくのは、サブプロセスモジュールを使って自分のpythonプログラムからosascriptを呼び出すことです。
より正確には(例のコードを参照してください)、私は自分のカレンダーに何かを追加したいのですが、私のpythonプログラムの文字列としてそれを行い、その後osascriptにパイプするアプリケーションを生成します。
これはスーパーエレガントではなく、おそらく超高速ではありませんが、うまく機能します。だから、私は現在、イベントを追加するためのPython関数を持つカレンダーモジュールを作成しています。イベントのリストを取得しています。それぞれは、AppleScriptを文字列として生成し、osascriptを呼び出します。
ひどく聞こえますが、かなりうまくいきます。好みのプログラム用のモジュールがあれば、もうAppleScriptについて心配する必要はありません。
AppleScriptでエンコードして、返すデータをPythonプログラムでデコードする方法が必要です。 AppleScriptとの間でやりとりされるほとんどのデータは辞書的なものですが、reモジュールを使ってこれまで問題になっていません。
ここでは、「誕生日」のカレンダーのUIDを取得する例を示します。
私の方法の主な問題は、私がアクセスしたいすべてのものに対してラッパー関数を書く必要があることです。面倒なプロセス。
私が見ている主な利点は、a)動作し、私が望むところに到達し、b)将来の証明であるようです。なぜなら、ある時点でリンゴがjavascriptなどに賛成してapplescriptを破棄すれば、ラッパーモジュールを適応させた後も私のプログラムはすべて動作します。
とにかく...
希望するものがあります。
ところで、誰かがもっと良い方法を知っている場合は、私に知らせてください。誰かがより良い方法を知らないが、自分のアプローチが好きで、ラッパーモジュールの作成に関心があるなら、私にも教えてください。
これは例です。
ベスト、 ステファン
import subprocess
def asrun(ascript):
"Run the AppleScript ascript and return the standard output and error."
return subprocess.run(['osascript'],
input=ascript,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
encoding="utf-8")
def get_uid_of_calendar(name):
script = '''\
tell application "Calendar"
return uid of calendar "'''+name+'''"
end tell
'''
cal_res = asrun(script)
return cal_res.stdout
get_uid_of_calendar("Birthdays")
- 1. どのようなロボット(Web)ライブラリがPythonで利用できますか?
- 2. (gasp)ACTに利用できるPythonライブラリはありますか?
- 3. モジュール 'MyApp'が利用できません
- 4. Pythonでのファイル管理用のライブラリ/モジュールはありますか?
- 5. Pythonライブラリをrqworkerで利用できるようにする
- 6. エラー:$ injector:nomodモジュールが利用できない
- 7. モジュール 'video'は利用できません
- 8. モジュール 'ngStorage'は利用できません
- 9. 関数がPythonモジュールで利用可能かどうかを調べる
- 10. Heroku:dbm.error:db typeはdbm.gnuですが、モジュールは利用できません
- 11. OSXのpandasモジュールとPython 3
- 12. バイナリJSON JavaScriptライブラリはブラウザで利用できますか?
- 13. SECS/GEMプロトコルで利用できるライブラリはありますか?
- 14. Android NDKでライブラリを利用できますか?
- 15. 任意のpython OpenIDサーバが利用できますか?
- 16. Clojureにはどのようなテキスト読み上げライブラリと音声認識ライブラリが利用できますか?
- 17. モジュールで利用できるvbaタイマー
- 18. Pythonは同じモジュールを複数の他のモジュールで再利用します
- 19. Google App EngineにはどのSOAPライブラリを利用できますか?
- 20. モジュール(ライブラリ)をPythonプロジェクトにインポートする便利な方法はありますか?
- 21. Python、sigaction(2)が利用できますか?
- 22. linuxのpythonディレクトリにインストールされていないPythonモジュールを利用することはできますか?
- 23. モジュール「mainAppですが」利用できない
- 24. 利用できない共有ライブラリcom.android.hardware.usb
- 25. 利用できない共有ライブラリcom.google.android.maps
- 26. スレッドモジュールの上でPythonでEventletモジュールを使用する利点は何ですか?
- 27. AngularJSユニットテスト:モジュール 'admin.module'が利用できません
- 28. PowerShell PKIモジュールが利用できません
- 29. httpモジュール:リクエストが利用できません
- 30. phoenix viewモジュールが利用できません
ATOMac/pyatomは、これまでのところ、Pythonで唯一のものです。これはPython2.7でのみ動作しますが、テキストなどを取得するのに十分です。 –