A)ユーザー入力を受け付けることができるPythonスクリプトをどのように持っていますか。また、b)コマンドラインから実行した場合に引数を読み込むようにするにはどうすればよいですか。
ユーザー入力を読むには、 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
はPython 3.xでは使用できなくなりました。しかしraw_input
はinput
に改名されたので、同じ機能が存在します。
input_var = input("Enter something: ")
print ("you entered " + input_var)
コマンドライン引数を処理する最良の方法は argparse
モジュールです。
ユーザー入力を取得するにはraw_input()
を使用してください。 readline module
をインポートすると、ユーザーは行編集と履歴を持つようになります。
自分がしていることが分からない限り、input
関数を使用しないように注意してください。 raw_input
とは異なり、input
は任意のpython式を受け入れるので、eval
のようなものです。
この単純なプログラムは、コマンドラインからユーザー入力を入力する方法、および無効な引数を渡す際のヘルプを表示する方法を理解するのに役立ちます。
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)number以外の無効な引数を渡している
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)
それが3.xバージョンであるならば、単に単に使う:
variantname = input()
たとえば、8を入力します。
x = input()
8
xは8になりますが、それ以外に定義した場合を除き、文字列になります。
そのため、convertコマンドを使うことができます。
a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
Pythonの時点で 3.2 2.7、コマンドライン引数を処理するための argparse があります。
Python 2では:
data = raw_input('Enter something: ')
print data
Python 3では:
data = input('Enter something: ')
print(data)
import six
if six.PY2:
input = raw_input
print(input("What's your name? "))