はじめに
Pythonは-m
オプションを付けてpython
を実行するとモジュールを実行してくれます。
このオプションは$PYHTONPATH
で設定されているモジュールの配置場所や、
設定ファイルなどで設定されているsys.path
の場所にあるモジュールを実行できます。
Pythonをインストールすると一緒に導入される標準モジュールの中にも、コマンドラインからの実行できるものが存在します。
今回はその中でも明日からでも使えるモジュールを紹介します。
1. SimpleHTTPServer
HTTPサーバを立てる。
1 2 3 4 |
$ python -m SimpleHTTPServer Serving HTTP on 0.0.0.0 port 8000 ... 127.0.0.1 - - [06/May/2018 22:41:39] "GET / HTTP/1.1" 200 - |
カレントディレクトリをHTTPで公開します。
引数なしでは8000番ポートで、引数にポート番号を与えることもできます。
ファイル共有などに簡単に使えるかもしれません。
また、index.htmlを作ることで読み込んでくれるようです。
これが便利すぎて今回の記事を作ったと言っても過言ではないです。
2. CGIHTTPServer
CGIが実行できるHTTPServerを立てる。
1 2 3 |
$ python -m CGIHTTPServer Serving HTTP on 0.0.0.0 port 8000 ... |
CGI実行機能以外はSimpleHTTPServerと同じです。
3. smtpd
SMTPサーバを立てる。
1 2 |
$ sudo python -m smtpd -n localhost:25 |
メール送信テストなどに使えそうですかね。
sudo
をつけないといけない点に注意です。
4. smtplib
localhostにメールを送信する。
1 2 3 4 5 |
$ python -m smtplib From: To: Enter message, end with ^D: |
From,To,messageを順番に入力して最後にEOFを入力して送信。
大体の環境ではEOFはCtrl+Dです。
smtpdと一緒に使うことになるかと思います。
5. zipfile
zipファイルを展開、圧縮する。
1 2 3 4 5 6 7 |
$ python -m zipfile Usage: zipfile.py -l zipfile.zip # Show listing of a zipfile zipfile.py -t zipfile.zip # Test if a zipfile is valid zipfile.py -e zipfile.zip target # Extract zipfile into target dir zipfile.py -c zipfile.zip src ... # Create zipfile from sources |
ヘルプも出るのでわかりやすくて使いやすい!
ヘルプの通り、-l
でリスト、-t
でテスト、-e
で展開、-c
で圧縮です。
6. gzip
gzipファイルを展開、圧縮する。
- 圧縮
1 2 |
$ python -m gzip test.txt |
- 展開
1 2 |
$ python -m gzip -d test.txt.gz |
zipfileと違い、gzipにはヘルプはないです。
少し、使いづらいですね…
7. base64
base64エンコード、デコードして表示する。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ cat test.txt test $ python -m base64 test.txt dGVzdAo= $ echo 'test' | python -m base64 dGVzdAo= $ echo 'dGVzdAo=' | python -m base64 -d test |
ファイルを引数に取ります。
echoにパイプで使うことで任意の文字列をエンコード、デコードもできます。
デコードはオプション-d
です。
8. json.tool
jsonを整形して表示する。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ cat test.json {"python":"test"} $ python -m json.tool test.json { "python": "test" } $ echo '{"python":"test"}' | python -m json.tool { "python": "test" } |
jsonファイルを整形します。
echoにパイプで使うこともできます。
9. xmllib
xmlを解析する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ cat test.xml test $ python -m xmllib test.xml start tag: data: 'test' end tag: data: '\n' $ echo 'test' | python -m xmllib start tag: data: 'test' end tag: data: '\n' |
こちらもファイルを引数に取り、解析します。
10. platform
OS情報を表示する。
1 2 3 |
$ python -m platform Linux-4.4.0-17134-Microsoft-x86_64-with-Ubuntu-16.04-xenial |
意外と便利かもしれないですね。
11. locale
ロケール情報を表示する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ python -m locale Locale aliasing: Locale defaults as determined by getdefaultlocale(): ------------------------------------------------------------------------ Language: ja_JP Encoding: UTF-8 Locale settings on startup: ------------------------------------------------------------------------ LC_NUMERIC ... Language: (undefined) Encoding: (undefined) … |
詳しいロケール情報が出てきます。
すごく長いです、普通にlocaleコマンドのほうが読みやすいかも…
12. telnetlib
telnetクライアントとして使える。
- スターウォーズ・エピソード4が流れる
1 2 |
$ python -m telnetlib towel.blinkenlights.nl |
- 囲碁ができる
1 2 |
$ python -m telnetlib wing.gr.jp 1515 |
- チェスができる
1 2 |
$ python -m telnetlib freechess.org 5000 |
13. this
The Zen of Python(Pythonの禅)を見ることができる。
1 2 3 4 |
$ python -m this The Zen of Python, by Tim Peters … |
Pythonのイースターエッグだそうです。
中身は公式ドキュメントのPEP20にも載っています。
Pythonでコードを書く際の原則をまとめたものです。
Pythonインタプリタからimport this
でも見ることができます。
おまけ
面白いコマンドを探していた所、slコマンドというものを見つけました。
昔から存在している有名なもののようですね。
ls
を打ち間違えることから作られたようです。
OSに依りますが、Ubuntuでは以下のコマンドでインストールできます。
1 2 |
$ sudo apt-get install sl |
インストール後、sl
を打つことでSLが走り抜けていきます。
オプションとしてlsでよく使われる-l
、-a
、-F
があります。
SLが小さくなったり、乗客が助けを求めていたり、空を飛んでいったりします。
おわりに
Pythonは結構使っているんですが、コマンドラインから使える標準モジュールがあるとは知りませんでした。
特にSimpleHTTPServerとzipfileの2つはとても使いやすそうなので使っていきたいと思います。
telnetで見られるスターウォーズはすごいですね…
AA職人の熱意を感じます。