Python は、特にコマンドライン インターフェイス (CLI) アプリケーションを構築する場合、その多用途性と使いやすさで広く知られています。日常的なタスクを自動化したい場合でも、開発者ツールを構築したい場合でも、柔軟なスクリプトを作成したい場合でも、Python の豊富なエコシステムは CLI を効率的に処理するためのさまざまなライブラリを提供します。
このブログ投稿では、Python での CLI の操作について詳しく説明し、次の内容を取り上げます。
この投稿を終えるまでに、堅牢でユーザーフレンドリーなコマンドライン アプリケーションを作成する準備が整います。
CLI は次の機能を提供するため、システム管理、データ処理、ソフトウェア開発で広く使用されています。
Python は CLI ツールを構築するためのライブラリをいくつか提供しています:
sys.argv は、コマンドライン引数にアクセスする基本的な方法です。コマンドライン引数をリストとして保存します。最初の要素は常にスクリプト名です。
import sys # Command-line arguments print(f"Script Name: {sys.argv[0]}") print(f"Arguments: {sys.argv[1:]}")
スクリプトを実行しています:
$ python script.py arg1 arg2 arg3 Script Name: script.py Arguments: ['arg1', 'arg2', 'arg3']
argparse モジュールは、CLI を作成するための Python の標準ライブラリです。 sys.argv よりも詳細な制御が可能で、ヘルプ メッセージとエラー処理が自動的に生成されます。
import argparse parser = argparse.ArgumentParser(description="A simple CLI tool") parser.add_argument("name", help="Your name") parser.add_argument("--greet", help="Custom greeting", default="Hello") args = parser.parse_args() print(f"{args.greet}, {args.name}!")
スクリプトを実行しています:
$ python script.py Alice Hello, Alice! $ python script.py Alice --greet Hi Hi, Alice!
型チェックと選択肢の例:
parser.add_argument("age", type=int, help="Your age") parser.add_argument("--format", choices=["json", "xml"], help="Output format")
スクリプトを実行しています:
$ python script.py Alice 30 --format json
click は、コマンドライン インターフェイスを作成するためのより高度なライブラリです。コマンド、サブコマンド、オプションを定義するためのデコレータベースのアプローチを提供します。
import click @click.command() @click.option('--name', prompt='Your name', help='The person to greet.') @click.option('--greet', default="Hello", help='Greeting to use.') def greet(name, greet): """Simple program that greets NAME with a GREET.""" click.echo(f'{greet}, {name}!') if __name__ == '__main__': greet()
スクリプトを実行しています:
$ python greet.py --name Alice --greet Hi Hi, Alice!
複数のサブコマンドを使用して、より複雑な CLI ツールを作成できます。
import click @click.group() def cli(): pass @cli.command() def start(): click.echo("Starting the application...") @cli.command() def stop(): click.echo("Stopping the application...") if __name__ == '__main__': cli()
スクリプトを実行しています:
$ python app.py start Starting the application... $ python app.py stop Stopping the application...
どのライブラリを使用する場合でも、エラー処理はスムーズなユーザー エクスペリエンスを提供するために非常に重要です。
必要な引数が欠落している場合、argparse はエラーをスローし、使用方法の説明を表示します:
$ python script.py usage: script.py [-h] name script.py: error: the following arguments are required: name
クリックでは、カスタム例外を発生させ、デコレータを使用してエラーを適切に処理できます。
@click.command() @click.option('--count', type=int, help='Number of repetitions') def repeat(count): if count is None or countargparse と click を他のライブラリと組み合わせる
CLI 機能を拡張するには、argparse または click を、OS、サブプロセス、さらにはカスタム ライブラリなどの他のライブラリと組み合わせることができます。
例: argparse と os の組み合わせ
import os import argparse parser = argparse.ArgumentParser(description="File operations CLI") parser.add_argument("filename", help="Name of the file to check") parser.add_argument("--create", action="store_true", help="Create the file if it does not exist") args = parser.parse_args() if os.path.exists(args.filename): print(f"{args.filename} already exists.") else: if args.create: with open(args.filename, 'w') as f: f.write("New file created.") print(f"{args.filename} created.") else: print(f"{args.filename} does not exist.")スクリプトを実行しています:
$ python filecli.py example.txt --create example.txt created.CLI ツールのパッケージ化
CLI ツールを配布するには、setuptools を使用してパッケージ化し、どのシステムからでもグローバルにアクセスできるようにします。
ステップ 1: setup.py ファイルを作成する
from setuptools import setup setup( name='greet-cli', version='0.1', py_modules=['greet'], install_requires=[ 'click', ], entry_points=''' [console_scripts] greet=greet:greet ''', )ステップ 2: CLI をローカルにインストールする
$ pip install --editable .これで、greet コマンドがグローバルに使用できるようになりました:
$ greet --name Alice Hello, Alice!PyPI で配布
ツールを一般に配布するには、PyPI アカウントを作成し、手順に従ってパッケージをアップロードします。
- パッケージをビルドします:
python setup.py sdist bdist_wheel
- パッケージをアップロードします:
twine upload dist/*CLI 構築のベスト プラクティス
- 明確なヘルプ メッセージを提供する: ユーザーをガイドするために、常に --help を含めます。
- 入力の検証: 型チェックを使用し、例外を適切に処理します。
- 直感的なコマンドを設計する: コマンド構造が論理的で使いやすいものであることを確認してください。
- エッジ ケースでのテスト: 無効な入力でも CLI ツールが正しく動作することを確認します。
- コードをモジュール化する: テストとメンテナンスを容易にするために、コマンドライン ロジックをコア機能から分離しておきます。
結論
Python は、コマンドライン インターフェイス (CLI) アプリケーションを構築するための優れたツールキットを提供します。組み込みの argparse モジュールを使用している場合でも、より機能が豊富な click を使用している場合でも、ワークフローを自動化し、データを処理し、生産性を向上させる強力で使いやすいツールを作成できます。
Python で CLI を操作する基本と高度な機能を学習したので、今度はそれを実践してみましょう。独自のツールを構築し、共有したり、世界中に配布したりできます!
ご質問やご提案がありましたら、お気軽にお問い合わせください:
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3