5

現在、sys.argv[1] を使用してコマンド ラインで文字列を受け入れる python ファイルがあります。次に、その文字列に対して操作を実行し、変更された文字列をコマンド ラインに返します。

文字列のファイル (1 行に 1 つ、fwiw) を提供できるバッチ モード オプションを実装し、それをコマンド ラインに戻して、次のような出力をリダイレクトできるようにしたいと考えています。

$ python script.py -someflag file.txt > modified.txt 

現在の機能を保持しながら。

私は 2.6 しか実行していないため、argparse はオプションではありません。私が見たチュートリアルでは、argparse、getopt を使用するか、複雑すぎる/適用されない例を掘り下げています。

入力をチェックして適切に行動するための最良の方法は何ですか?

4

2 に答える 2

6

argparseはまだオプションですが、2.6 には組み込まれていません。サードパーティのパッケージと同じように (たとえば、 を使用してeasy_install argparse) インストールすることもできます。

このコードの例は次のとおりです。

import sys
import argparse

p = argparse.ArgumentParser(description="script.py")
p.add_argument("-s", dest="string")
p.add_argument("-f", dest="infile")

args = p.parse_args()

if args.infile == None and args.string == None:
    print "Must be given either a string or a file"
    sys.exit(1)
if args.infile != None and args.string != None:
    print "Must be given either a string or a file, not both"
    sys.exit(1)
if args.infile:
    # process the input file one string at a time
if args.string:
    # process the single string
于 2012-08-31T21:00:47.273 に答える
3

ここで私の答えを参照してください: Pythonスクリプトに渡されたコマンドライン引数を取得/解析する最良の方法は何ですか?

ショートカットとして、サンプル コードを次に示します。

import optparse

parser = optparse.OptionParser()

parser.add_option('-q', '--query',
    action="store", dest="query",
    help="query string", default="spam")

options, args = parser.parse_args()

print 'Query string:', options.query
于 2012-08-31T21:19:06.737 に答える