web-dev-qa-db-ja.com

PYTHON=コマンドラインからファイルを取得

Pythonコードを実行するときにコマンドラインからファイル名を取得するにはどうすればよいですか?コードがファイルを開いて行を読み取るが、実行するたびにファイルが変化する場合のように、いう:

python code.py input.txt

コードは「input.txt」を分析しますか?実際のPythonコードで何をしなければなりませんか?これはかなり曖昧な質問ですが、それをもっとうまく説明する方法は本当にわかりません。

37
Naveen C.

すばらしいオプションはfileinputモジュールです。これはコマンドラインから任意またはすべてのファイル名を取得し、指定されたファイルの内容を1つの大きなファイルであるかのようにスクリプトに渡します。

import fileinput
for line in fileinput.input():
    process(line)

詳細情報 こちら

41
kindall
import sys
filename = sys.argv[-1]

これにより、コマンドラインの最後の引数が取得されます。引数が渡されない場合、sys.argv[0]は実行中のプログラムの名前であるため、スクリプト名そのものになります。

29
agf

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
15
Degraw

コマンドラインパラメータは、 sys モジュールの argv リストを介してリストとして利用できます。リストの最初の要素はプログラムの名前です(sys.argv[0])。残りの要素はコマンドラインパラメーターです。

より複雑なコマンドライン解析については、 getoptoptparse 、および argparse モジュールも参照してください。

9
Mark Tolonen

既存の回答で言及されていることに加えて、 コマンドラインインターフェイス作成キット(クリック) の使用に依存する他の選択肢があります。この回答を投稿するまでの最新の安定版は バージョン6 です。 公式ドキュメント には、ファイルを処理してコマンドライン引数として渡す方法の例があります。

1