web-dev-qa-db-ja.com

ユーザー入力とコマンドライン引数

A)ユーザー入力を受け付けることができるPythonスクリプトをどのように持っていますか。また、b)コマンドラインから実行した場合に引数を読み込むようにするにはどうすればよいですか。

465
Teifion

ユーザー入力を読むには、 cmdモジュール を使って簡単にミニコマンドラインインタプリタを作成し(ヘルプテキストと自動補完を使って)、 raw_inputinput Python用)ユーザーからのテキストの行を読むための3+)。

text = raw_input("Prompt")  # Python 2
text = input("Prompt")  # Python 3

コマンドライン入力はsys.argvにあります。スクリプトでこれを試してください。

import sys
print (sys.argv)

コマンドラインオプションを解析するための2つのモジュールがあります: optparse (Python 2.7以降廃止予定、代わりに argparse を使用)および getopt 。スクリプトにファイルを入力したいだけの場合は、 fileinput の力に注意してください。

Pythonライブラリリファレンス はあなたの友達です。

416
Antti Rasinen
var = raw_input("Please enter something: ")
print "you entered", var

またはPython 3の場合:

var = input("Please enter something: ")
print("You entered: " + var)
444
lbz

raw_inputはPython 3.xでは使用できなくなりました。しかしraw_inputinputに改名されたので、同じ機能が存在します。

input_var = input("Enter something: ")
print ("you entered " + input_var) 

変更のドキュメンテーション

201
steampowered

コマンドライン引数を処理する最良の方法は argparseモジュールです。

ユーザー入力を取得するにはraw_input()を使用してください。 readline module をインポートすると、ユーザーは行編集と履歴を持つようになります。

31
Dave Webb

自分がしていることが分からない限り、input関数を使用しないように注意してください。 raw_inputとは異なり、inputは任意のpython式を受け入れるので、evalのようなものです。

18
Vhaerun

この単純なプログラムは、コマンドラインからユーザー入力を入力する方法、および無効な引数を渡す際のヘルプを表示する方法を理解するのに役立ちます。

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'>
13
Viswesn

コンソール/端末からの入力には '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モジュールを使用してください。

ペヴ

10
Simon Peverett

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)
9
Matt Olan

それが3.xバージョンであるならば、単に単に使う:

variantname = input()

たとえば、8を入力します。

x = input()
8

xは8になりますが、それ以外に定義した場合を除き、文字列になります。

そのため、convertコマンドを使うことができます。

a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
6
CorpseDead

Pythonの時点で 3.2 2.7、コマンドライン引数を処理するための argparse があります。

6
GreenMatt

Python 2では:

data = raw_input('Enter something: ')
print data

Python 3では:

data = input('Enter something: ')
print(data)
2
Mark
import six

if six.PY2:
    input = raw_input

print(input("What's your name? "))
1
Will Charlton