nodemonは、単純なスクリプトもwatchできる。

Nodemonはファイル変更監視ツールとして使える。

Node.jsには、nodemonというファイル更新の監視ツールがあります。これをインストールするとNode.jsのアプリだけでなく、通常のJavaScriptファイルやPythonなどの全然関係ないファイルもファイル更新時に再実行することができるので、ファイル変更監視ツールを持っていない場合はお勧めです。

インストール

これで、nodemonコマンドが使えます。Windowsの場合でもnodemon.cmdができるのでこれだけで使えます。

単純なJavaScriptのファイル監視

Node.jsやWebアプリではなく、単純なコンソールのJavaScriptファイルなども以下のようなコマンドで監視できます。使い方は簡単で、–watch ディレクトリで監視するディレクトリーをしてします。最後に実行するスクリプト(myapp.js)を記述します。

Pythonのファイル監視

pythonのverboseオプションを付けてapp.pyファイルを監視する例です。こんな感じにいろんなスクリプトなども監視できるので便利です。

 

 

VSCodeでインストールされるPythonモジュール一覧と確認方法

VSCodeで開発する場合、はじめてhello.pyファイルなどを作成したときに、pylintをインストールするように警告されます。OKを選択すると以下のように「python -m pip install pylint」が実行されて依存するモジュールがインストールされます。

pip freezeで確認

上記のpipでインストールされたモジュールはpip freezeでバージョンを含めた一覧表示で確認できます。

 

 

 

Python3.6とctypesでメモ帳を起動し、Win32APIで移動、リサイズ

Python3.6でメモ帳起動して、移動とリサイズをするサンプルスクリプト では、pypiwin32パッケージに依存していましたが、ctypesを使うことでPythonからWin32APIを呼び出せました。

ちょっとだけWin32APIを使う場合は、外部ライブラリーに依存せずに、ctypesを使ってしまうのもよいです。

 

Python3.6でメモ帳起動して、移動とリサイズをするサンプルスクリプト

Python3ではpywin32パッケージを使うとウィンドウの操作ができます。pywin32パッケージのみで動作しますが、PyCharmでインポート文にエラーがでました。そのためwin32guiをインストールするとこのエラーもなくなりました。

  • pip install pywin32
  • pip install win32gui

まずはPopen関数で、サブプロセスとしてメモ帳を起動します。起動したアプリはフォアグラウンドにくるので、Win32APIのGetForegroundWindow関数で、ウィンドウハンドル(=ID番号のようなもの)を取得し、MoveWindow関数に、このIDと、XY座標、縦幅、横幅を渡し、移動とリサイズをします。

また、subprocessパッケージには、pollでサブプロセスの生存確認ができ、wait関数でサブプロセスが終了するまで待機できます。今回はメモ帳が閉じるまでこのPythonスクリプトは動作していて、メモ帳が閉じたら、done.をコンソールに表示し終了します。

COMを使ってPythonからExcelを操作する簡単なソースコード

pipでpypiwin32をインストールすれば、COMによりPythonからExcelをVBAのように操作できます。openpyxlは新しい形式のxlsxファイルを読み書きできますが、古いxlsファイルなどは操作出来ないので、適宜使い分ければよさそうです。

PyCharmで開発する場合、openpyxlは入力補完ができ効率が良いですが、COMはないためちょっと面倒でした。

pyautoguiでイメージ認識、キーボード入力

pyautoguiは、locateOnScreenで引数の画像とスクリーンの一致する領域(x,y,width,height)を返します。また、pyautogui.centerでその四角形の中心点を求めらます。

今回は、上記を応用し、メモ帳にpyautogui.typewriteでキー入力をしてみました。

pyautoguiでマウスを移動してみる

 

Pythonではpipでpyautoguiをインストールしてマウスやキーボードの自動化をプログラミングできます。

簡単な関数

  • position – 現在のマウスカーソル位置を取得
  • moveTo(x,y) – xy座標にマウスカーソルを移動
  • size – 画面解像度を取得。HDモニターなら1920×1080

チートシート

http://pyautogui.readthedocs.io/en/latest/cheatsheet.html

フェイルセーフ

マウスキーボードを自動化プログラムを実行すると、自分でマウス操作ができなくなってしまいます。開発中はそれを避けるため、pyautogui.PAUSEでウェイト秒数を指定して、ゆっくり動作するようにします。またpyautogui.FAILSAFEをTrueにすると、画面左上、つまり(0,0)にマウスカーソルを持っていくと、FaleSafeExceptionが発生しプログラムを強制終了させます。

 

Python3でSeleniumを使ってブラウザーを操作する

Pythonでは、seleniumを使って簡単にブラウザー操作ができます。

環境構築

  1. pip install selenium
  2. Chrome用のWebDriverをダウンロード、スクリプト内でexeファイルを参照

以前のSeleniumでは、Firefoxの場合はWebDriverが不要だったようですが、現在はFirefoxでもWebDriverが別途必要なようです。

ソースコード

XKCDコミックのサイトからコミックをダウンロードする。

https://automatetheboringstuff.com/chapter11/ で指定サイトのHTMLをダウンロードして、そのHTMLをbeautifulSoupでパースして、画像をダウンロードするプログラムを作りました。

これは様々なサイトに応用できます。