pipでpypiwin32をインストールすれば、COMによりPythonからExcelをVBAのように操作できます。openpyxlは新しい形式のxlsxファイルを読み書きできますが、古いxlsファイルなどは操作出来ないので、適宜使い分ければよさそうです。
PyCharmで開発する場合、openpyxlは入力補完ができ効率が良いですが、COMはないためちょっと面倒でした。
プログラミング初心者向けチュートリアルやUnity5やC#の記事を書いています。
pipでpypiwin32をインストールすれば、COMによりPythonからExcelをVBAのように操作できます。openpyxlは新しい形式のxlsxファイルを読み書きできますが、古いxlsファイルなどは操作出来ないので、適宜使い分ければよさそうです。
PyCharmで開発する場合、openpyxlは入力補完ができ効率が良いですが、COMはないためちょっと面倒でした。
pipでopenpyxlをインストールして、Excel操作ができました。
pyautoguiは、locateOnScreenで引数の画像とスクリーンの一致する領域(x,y,width,height)を返します。また、pyautogui.centerでその四角形の中心点を求めらます。
今回は、上記を応用し、メモ帳にpyautogui.typewriteでキー入力をしてみました。
Pythonではpipでpyautoguiをインストールしてマウスやキーボードの自動化をプログラミングできます。
http://pyautogui.readthedocs.io/en/latest/cheatsheet.html
マウスキーボードを自動化プログラムを実行すると、自分でマウス操作ができなくなってしまいます。開発中はそれを避けるため、pyautogui.PAUSEでウェイト秒数を指定して、ゆっくり動作するようにします。またpyautogui.FAILSAFEをTrueにすると、画面左上、つまり(0,0)にマウスカーソルを持っていくと、FaleSafeExceptionが発生しプログラムを強制終了させます。
Pythonでは、seleniumを使って簡単にブラウザー操作ができます。
以前のSeleniumでは、Firefoxの場合はWebDriverが不要だったようですが、現在はFirefoxでもWebDriverが別途必要なようです。
https://automatetheboringstuff.com/chapter11/ で指定サイトのHTMLをダウンロードして、そのHTMLをbeautifulSoupでパースして、画像をダウンロードするプログラムを作りました。
これは様々なサイトに応用できます。
automatetheboringstuff.com でPythonでGoogle検索し結果から上位5つをブラウザーを起動して表示する方法を学びました。pipコマンドで、requests,beautifulsoup4を導入して簡単にできました。
Pythonでは、タプルやリストをアスタリスク演算子で特定の型に変換できます。静的言語のキャストのような感じで、「アンパック」と呼ばれます。
https://docs.python.jp/3/tutorial/controlflow.html#unpacking-argument-lists
以下の例では、この仕組みを使い、リストの要素がタプルになっている入力データを、Personクラスに変換して、表示しています。このように特定のクラスに変換できると、クラスのプロパティやメソッド呼び出しでコードが見やすくなります。
https://docs.python.jp/3/whatsnew/2.0.html#list-comprehensions
https://stackoverflow.com/questions/46528460/passing-a-list-of-argument-sets-to-a-function
「O’Reilly Japan – 退屈なことはPythonにやらせよう」の日本語版が2017年6月に販売されました。気になったので、目次を見たところ前半の0章から10章までは初心者向けのPython入門なので、購入しようかどうか迷っていたのですが、英語版は、「https://automatetheboringstuff.com/」で公開されていていました。
私はプログラミング経験があり、PythonのWebフレームワークのFlaskやスクレイピングライブラリーのBeautifulSoupを少し使ったことがあるので、英語版で各ライブラリーの使い方を参考にしながら、ソースコードを動かせばよさそうなのが分かりました。
ブラウザー操作、画像認識、キーボードマウス操作がプログラミングで制御できるといろいろできそうです。
Pythonの入門で数当てゲームを作りました。random.radintで乱数を作り、その数を当てるだけです。