2

私のスクリプトは現在sys.argv、プログラムに提供された入力ファイルをチェックするために使用しています。

代わりに利用しようとしていargparseますが、うまくいかないようです。セットアップして引数を追加することはできましたが、引数を解析してその解析済み引数を出力すると、名前空間が取得されます。どうすれば文字列を取得できますか? 基本的に、引数を文字列として受け取り、その名前のファイルを開きたいと思います。

現在、私sys.argvは:

filename = sys.argv[1]
f = open(filename, 'r')

次のようにargparse出力しNamespaceます。

arg = parser.parse_args()
print arg

それを使用してファイルを開くにはどうすればよいですか?argparse引数のエラーハンドリングがずっと簡単なので使いたいです。

4

2 に答える 2

4

with次のようにステートメントを使用してファイルを開くことが望ましい(または何か!)と思います。

# printfile.py
import argparse

parser = argparse.ArgumentParser(description="Opens a file and does cool stuff ^^")
parser.add_argument('filename', type=str, help="Path to file to open")
args = parser.parse_args()

with open(args.filename) as f:
    print '   my uber cool file:'
    print f.readlines()

これらのキーワード引数を指定すると、きれいな -h ヘルプ テキスト オプションを作成するのにも役立ちます (これはきちんとしたものです)。

[dlam@dlam-63221:~] $ python printfile.py -h
usage: printfile.py [-h] filename

Opens a file and does cool stuff ^^

positional arguments:
    filename    Path to file to open
于 2012-09-07T01:54:43.750 に答える
2

セットアップargで引数に割り当てた名前が続くドットが続く印刷。argparse

例:

parser = argparse.ArgumentParser(description = 'Title you want')
parser.add_argument('-f', action = "store", dest = "fflag", type = str, help = "Filename to be used, stdin is default")

この場合、-fコマンド ラインではファイル名の前に が付けられparser.fflag、 のタイプでアクセスできます。str

于 2012-09-07T01:37:38.537 に答える