25 ポイント 投稿者 xguru 2024-06-05 | 2件のコメント | WhatsAppで共有
  • Pythonのモジュールはコマンドラインツールとして使える
    • たとえば webbrowser モジュールをコマンドラインで実行すると、デフォルトのWebブラウザで指定したURLを開ける
    • Python標準ライブラリには、このようなモジュール兼スクリプトのハイブリッドが多数含まれている
  • -m オプションを使ってPythonを実行すると、指定したPythonモジュールをスクリプトのように実行する
    • 一部のモジュールは import 時に何らかの動作をする。たとえば antigravity モジュールは XKCD の漫画をWebブラウザで開く。これをコマンドラインで実行すると、モジュールを import したのと同じ効果になる
    • これを「import side effect」と呼び、多くのモジュールはこれを避けている。antigravity のようなイースターエッグモジュールは例外
    • import side effect を避けるモジュールは、モジュールとして import されたときとスクリプトとして実行されたときで動作を変えるために __name__ 変数を使う

便利な汎用コマンドラインツール

  • python -m http.server: シンプルなWebサーバーを起動
  • python -m webbrowser: Webブラウザを起動
  • python -m json.tool: JSONデータを見やすく整形
  • python -m calendar: コマンドラインでカレンダーを表示

Windowsで特に便利なツール

  • python3.12 -m uuid: uuidgen CLIユーティリティに類似
  • python3.12 -m sqlite3: sqlite3 CLIユーティリティに類似
  • python -m zipfile: zip / unzip CLIユーティリティに類似
  • python -m gzip: gzip / gunzip CLIユーティリティに類似
  • python -m tarfile: tar CLIユーティリティに類似

Pythonコード作業時に便利なツール

  • python -m pip: サードパーティ製Pythonパッケージをインストール
  • python -m venv: 仮想環境を作成
  • python -m pdb: Pythonデバッガーを実行
  • python -m unittest: unittestテストを実行
  • python -m pydoc: ドキュメントを表示
  • python -m doctest: 指定ファイルの doctest を実行
  • python -m ensurepip: pip をインストール
  • python -m idlelib: IDLE グラフィカルREPLを実行
  • python -m zipapp: Pythonモジュールを実行可能ZIPに変換
  • python -m compileall: Pythonファイルをバイトコードへ事前コンパイル

Pythonコード解析ツール

  • python -m tokenize: Pythonモジュールをトークンに分解
  • python -m ast: コードの抽象構文木を表示
  • python -m dis: Pythonコードをバイトコードに逆アセンブル
  • python -m inspect: Pythonオブジェクトのソースコードを調べる
  • python -m pyclbr: モジュール内オブジェクトの概要を表示

Pythonのイースターエッグとして動く楽しいスクリプト

  • python -m __hello__: "Hello world!" を出力
  • python -m this: Pythonの禅(The Zen of Python, PEP 20)を出力
  • python -m antigravity: WebブラウザでPython関連の XKCD 漫画353番を開く
  • python -m turtledemo: turtle モジュールで描けるさまざまな図形のデモを表示

その他のPython関連ツール

  • python -m asyncio: asyncio対応のPython REPLを実行
  • python -m cProfile: Pythonプログラムをプロファイリング
  • python -m pstats: cProfileで生成されたプロファイル統計を表示
  • python -m pickle: pickleファイルの内容を表示(high-level)
  • python -m pickletools: pickleファイルを分解(low-level)

あまり便利ではないツール

  • python -m timeit: Python式の実行時間を測定
  • python -m site: Pythonの "site" 情報を表示
  • python -m sysconfig: Python設定の詳細を表示
  • python -m platform: 現在のプラットフォーム情報を表示
  • python -m mimetypes: ファイルの MIME type / 拡張子情報を表示
  • python -m quopri: raw email データをエンコード / デコード
  • python -m filecmp: 2つのディレクトリ内容を比較
  • python -m tabnanny: Pythonファイルのタブとスペース混在をチェック

2件のコメント

 
han905 2024-06-11

わあ、思ったより良い機能が多いですね。すごい。

 
dhy0613 2024-06-05

閉域網環境の Linux サーバーに zip ファイルを持ち込んだものの、unzip コマンドがなくて、
python -m zipfile モジュールで展開して作業を進めた記憶がありますね