argv
使用するときはファイルを引数として入力する必要があり(例:) python ex15.py ex15_sample.txt
、使用するときraw_input
はファイル名を入力として入力する必要があることを知っています。
しかし、ファイル名を取得する1つの方法が別の方法よりも優れている理由を理解できないようです。誰かが理由を説明できますか?
これは、重要な機能でない場合は、通常、インタラクティブなユーザー入力を避ける必要があるためです。例:stdinまたはコマンドラインから読み取ると、さまざまなプログラムを組み合わせて、スクリプトなどで実行できます。
多くのコードを実行し、画面の前に座って入力要求が来るのを待っていると想像してください。コマンドラインですべての関連情報を指定し、代わりにコーヒーを用意する方がよいのではないでしょうか。
あなたにできること:
これにより、プログラムに優れた機能が追加されます。コマンドラインでファイル名を指定するか、インタラクティブモードで入力することができます。
これを試して:
try:
fn = argv[1]
except IndexError:
fn = raw_input("filename > ")
コマンドライン引数入力の一部として、ユーザーはシステムコールを送信でき、プログラムがクラッシュする可能性があります。たとえば、ユーザーはlsコマンドを発行できます。プログラムが実行することになっていることに関係なく、システムはそのコマンドを実行します。