Pythonコードを実行するときにコマンドラインからファイル名を取得するにはどうすればよいですか?コードがファイルを開いて行を読み取るが、実行するたびにファイルが変化する場合のように、いう:
python code.py input.txt
コードは「input.txt」を分析しますか?実際のPythonコードで何をしなければなりませんか?これはかなり曖昧な質問ですが、それをもっとうまく説明する方法は本当にわかりません。
すばらしいオプションはfileinput
モジュールです。これはコマンドラインから任意またはすべてのファイル名を取得し、指定されたファイルの内容を1つの大きなファイルであるかのようにスクリプトに渡します。
import fileinput
for line in fileinput.input():
process(line)
詳細情報 こちら 。
import sys
filename = sys.argv[-1]
これにより、コマンドラインの最後の引数が取得されます。引数が渡されない場合、sys.argv[0]
は実行中のプログラムの名前であるため、スクリプト名そのものになります。
Argparseの使用は非常に直感的です。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--file", "-f", type=str, required=True)
args = parser.parse_args()
現在、ファイルの名前は次の場所にあります。
args.file
プログラムを少し異なる方法で実行する必要があります。
python code.py -f input.txt
既存の回答で言及されていることに加えて、 コマンドラインインターフェイス作成キット(クリック) の使用に依存する他の選択肢があります。この回答を投稿するまでの最新の安定版は バージョン6 です。 公式ドキュメント には、ファイルを処理してコマンドライン引数として渡す方法の例があります。