コマンド引数で住所を指定するとGoogle Mapが開く〜Python

コマンド引数で住所を指定するとGoogle Mapが開く〜Python

Pythonで簡単なアプリの例です。
ネタ元はO’REILLYの「退屈なことはPythonにやらせよう」からです。
この本はノンプログラマーにもわかりやすく書かれている良本です。他に何らかプログラム入門くらい経験し、プログラムが面白いと思う人には参考になります。
けれども、プログラム入門に挫折した人には難しいかもしれません。

ターミナルなどからコマンドでPythonを実行してコマンド引数として住所を入力するとその住所のGoogle Mapが開く仕組みです。
合わせてコマンド引数は指定せず、住所をコピーしておけばクリップボードから住所を読み込む仕組みもあります。
本の紹介では日本語でコマンド引数を指定するとうまくいきません。
これは、URLエンコードをすれば解決します。

完成コード

import webbrowser, sys, pyperclip
import urllib.parse
if len(sys.argv) > 1:
    address = ' '.join(sys.argv[1:])
else:
    address = pyperclip.paste()
address = urllib.parse.quote(address)
webbrowser.open('https://www.google.com/maps/place/' + address)

このコードをエディタで作成して「map.py」などの名前で保存しておきます。
次にターミナルなどでファイルの場所に「cd」で移動して、「python map.py 東京都 豊島区 南池袋」などとコマンド引数を指定してPythonを実行するとその住所のGoogle Mapが開きます。

ポイント

Pythoからブラウザを開くには「webbrowser」モジュールをインポートしておいて、「webbrowser.open()関数」を使います。
引数に開きたいURLを指定するだけです。

コピーしたクリップボードの内容を取得するには、「pyperclip」モジュールをインポートしておいて「pyperclip.paste()」とすれば取得できます。
これらはちょっとしたテクニックとして覚えておくと便利に使えるかもしれません。

さらにURLのエンコーディングは「urllib.parse」をインポートしておいて、URLに使いたい日本語を「urllib.parse.quote()」でエンコーディングすることができます。