コマンドライン引数を使って複数のファイルを処理し、それぞれの内容を表示するPythonプログラムを作成する方法について解説します。このプログラムは、指定されたファイルが存在しない場合にエラーメッセージを表示し、次のファイルの処理に進むことができます。また、ファイルポインタを一つだけ使うという制限も守りながら、ファイルの読み込みを行います。
1. コマンドライン引数の処理
Pythonでコマンドライン引数を処理するためには、標準ライブラリ「sys」を使います。sys.argvを使うことで、コマンドラインからファイル名を引数として受け取り、プログラム内でそれを扱うことができます。
次のコードで、引数として渡されたファイル名を取得し、指定がない場合は何も表示しないようにします。
import sys
# コマンドライン引数がなければ処理を終了
if len(sys.argv) < 2:
sys.exit()
# 引数に指定されたファイルを処理
このコードでは、引数がない場合にプログラムを終了させています。引数がある場合、次の処理に進みます。
2. ファイルの存在確認と内容の表示
指定されたファイルが存在するかを確認し、存在する場合はその内容を表示します。もしファイルが見つからなかった場合は、エラーメッセージを表示して次のファイルに進む処理を実装します。
for file_name in sys.argv[1:]:
try:
with open(file_name, 'r') as file:
print(f"{file_name} の内容:")
print(file.read())
except FileNotFoundError:
print(f"{file_name} が見つかりませんでした。")
ここでは、ファイルを開いてその内容を表示しています。もしファイルが見つからない場合、「{file_name} が見つかりませんでした。」とエラーメッセージを出力し、次の引数へ進みます。
3. 一つのファイルポインタを使う方法
問題の要点にある「ファイルポインタは一つしか使ってはいけない」という制限を守るためには、ファイルポインタを使い回す必要があります。上記のコードでは、forループ内で逐次ファイルを開いているため、毎回新しいファイルポインタが作成されます。
これを解決するためには、一度ファイルを開いてその内容を読み取った後に、再度次のファイルを開く方法を使います。例えば、ファイルを開いた後に内容を一度メモリに保持し、その後の操作でメモリを使う形にできます。
4. 実行例と確認
このプログラムを実行することで、コマンドライン引数に指定した複数のファイルを順に処理し、それぞれの内容を表示します。ファイルが見つからない場合はエラーメッセージを表示し、次のファイルに進みます。
例えば、コマンドラインから以下のように実行すると。
python script.py file1.txt file2.txt file3.txt
それぞれのファイルの内容が表示され、もしファイルが存在しなければその旨がエラーとして表示されます。
5. まとめ
この記事では、Pythonを使ってコマンドライン引数として複数のファイルを処理し、それぞれの内容を表示する方法を紹介しました。ファイルの存在確認、エラーハンドリング、ファイルの読み取り方法について学びました。ファイルポインタの制限も考慮しつつ、複数のファイルを効率的に処理する方法が理解できました。
このプログラムは、ファイルの読み込みや処理を行いたい時に役立つ基本的な方法です。ぜひ活用してみてください。


コメント