1

Pythonの学習を開始し、コマンドラインオプションをPythonスクリプトに渡して遊んでいます。2 つ以上の引数を連結して文字列変数に渡そうとしていますが、

例えば、

myscript.py http://www.domain.com 1234

それを という文字列変数に入れるとurl、値は " http://www.domain.com:1234 "になります。

それをアーカイブする方法がよくわかりません。いくつかの文字列操作でそれを行うのは非常に簡単ですが、これも同様raw_inputに行うことができるのだろうか.argparse

4

6 に答える 6

7
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('server') # first positional argument
parser.add_argument('port') # second positional argument
args = parser.parse_args()

url = '%s:%s' % (args.server, args.port)
print url
于 2011-01-07T22:22:58.067 に答える
2

argparse はそれを解決する 1 つの方法ですが、単に学習している場合 (YMMV) はやり過ぎかもしれません。

モジュールをインポートする場合sys、渡されたコマンド ライン引数は、次の文字列のリストで使用できます。sys.argv

import sys
if len(sys.argv) < 3:
    print "Not enough args!"
    sys.exit(0)
# sys.argv[0] is the name of your script, the rest are parameters
url = "%s:%s" % (sys.argv[1], sys.argv[2])
print url
于 2011-01-07T22:28:00.297 に答える
1

なぜしないのか、

argstring = ':'.join(args[1:])
于 2011-01-07T22:55:31.777 に答える
0

コマンドライン入力から文字列http://www.domain.com:1234の変数が必要な場合は、次のようにします。

if len(sys.argv) >= 3:
    result = '%s:%s' % tuple(sys.argv[1:3])
于 2011-01-07T22:35:28.580 に答える
0

この行 "url = '%s:%s' % (args.link, args.port)" と少し混乱していますが、その行は括弧内の引数を取り、それを文字列変数 'url' に追加しますか?

その形式は、実際には推奨されなくなりました。( http://docs.python.org/tutorial/inputoutput.htmlを参照)。現在推奨されている方法で同じことを行う最も簡単な方法は次のとおりです。

url = '{0}:{1}'.format( args.link , args.port )

{n} は format( variables ) 内の n 番目の変数です。このメソッドは、常に引数を文字列に変換します。

%s を使用する古い方法でも同じことができます。's' は引数を文字列に変換することを意味しますが、文字列の後の % 記号の後に引数があるのと同じ数の '%s' フラグが文字列内に存在する必要があります。これについて心配する必要はありませんが、学習している場合は .format() を使用してください。

于 2011-01-08T00:14:15.663 に答える
0

ありがとう、アンバー

それはまさに私が探していたものでした

#!/usr/bin/python

from urllib import urlopen
import argparse

usage='will be using it later'

parser=argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description=usage, add_help=False)
parser.add_argument('link')
parser.add_argument('port')
args = parser.parse_args()

url = '%s:%s' % (args.link, args.port)
link = urlopen(url)
content=link.read()

print(content)

この行 "url = '%s:%s' % (args.link, args.port)" と少し混乱していますが、その行は括弧内の引数を取り、それを文字列変数 'url' に追加しますか?

ジャック

于 2011-01-07T23:21:48.317 に答える