コマンドラインから実行した場合、a)ユーザー入力を受け入れることができるPythonスクリプトと、b)引数を読み込むようにする方法を教えてください。
argparse
では、2.7の前のバージョンとは少し異なりoptparse
ます。
コマンドラインから実行した場合、a)ユーザー入力を受け入れることができるPythonスクリプトと、b)引数を読み込むようにする方法を教えてください。
argparse
では、2.7の前のバージョンとは少し異なりoptparse
ます。
回答:
ユーザー入力を読み取るには、cmd
モジュールから簡単にミニコマンドラインインタープリターを作成し(ヘルプテキストとオートコンプリートを使用)、raw_input
(input
Python 3以降の場合)ユーザーからテキスト行を読み取ります。
text = raw_input("prompt") # Python 2
text = input("prompt") # Python 3
コマンドライン入力はにありsys.argv
ます。スクリプトでこれを試してください:
import sys
print (sys.argv)
コマンドラインオプションを解析するための2つのモジュールがあります:(Python 2.7以降非推奨、optparse
argparse
代わりに使用)およびgetopt
。スクリプトにファイルを入力するだけの場合は、の威力に注目してくださいfileinput
。
Pythonライブラリリファレンスはあなたの友達です。
var = raw_input("Please enter something: ")
print "you entered", var
またはPython 3の場合:
var = input("Please enter something: ")
print("You entered: " + var)
raw_input
。これは組み込み関数です。
raw_input
Python 3.xでは使用できなくなりました。しかし、raw_input
名前が変更されたinput
ため、同じ機能が存在します。
input_var = input("Enter something: ")
print ("you entered " + input_var)
import fileinput result=[] for line in fileinput.input(): result.append(line)
コマンドライン引数を処理する最良の方法はargparse
モジュールです。
使用するraw_input()
ユーザー入力を取得します。インポートするとreadline module
、ユーザーは行編集と履歴を取得します。
この単純なプログラムは、コマンドラインからユーザー入力をフィードする方法を理解し、無効な引数を渡すヘルプを表示するのに役立ちます。
import argparse
import sys
try:
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number",
type=int)
args = parser.parse_args()
#print the square of user input from cmd line.
print args.square**2
#print all the sys argument passed from cmd line including the program name.
print sys.argv
#print the second argument passed from cmd line; Note it starts from ZERO
print sys.argv[1]
except:
e = sys.exc_info()[0]
print e
1)5の平方根を見つける
C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5
2)数値以外の無効な引数を渡す
C:\Users\bgh37516\Desktop>python -i emp.py five
usage: emp.py [-h] square
emp.py: error: argument square: invalid int value: 'five'
<type 'exceptions.SystemExit'>
コンソール/ターミナルからの入力には、 'raw_input'を使用します。
ファイル名などのコマンドライン引数が必要な場合
$ python my_prog.py file_name.txt
次に、sys.argvを使用できます...
import sys
print sys.argv
sys.argvはリストで、0はプログラム名であるため、上記の例ではsys.argv [1]は「file_name.txt」になります。
コマンドラインオプションをすべて使用したい場合は、optparseモジュールを使用してください。
ペブ
Python <2.7を実行している場合は、optparseが必要です。これは、ドキュメントで説明されているように、アプリケーションの実行時に呼び出されるコマンドライン引数へのインターフェイスを作成します。
ただし、Python≥2.7では、optparseは非推奨になり、上記のようにargparseに置き換えられました。ドキュメントからの簡単な例...
次のコードは、整数のリストを受け取り、合計または最大値を生成するPythonプログラムです。
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print args.accumulate(args.integers)
Python現在 3.22.7、コマンドライン引数を処理するためのargparseが追加されました。
3.xバージョンの場合は、次のように使用します。
variantname = input()
たとえば、8を入力するとします。
x = input()
8
xは8になりますが、特に定義しない限り、文字列になります。
したがって、次のように変換コマンドを使用できます。
a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07