580

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

4

12 に答える 12

566

ユーザー入力を読み取るには、(ヘルプ テキストとオートコンプリート機能を備えた) ミニコマンド ライン インタープリターを簡単に作成するためcmdモジュールraw_inputと、ユーザーからのテキスト行を読み取るための( inputPython 3+ の場合) を試すことができます。

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

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

import sys
print (sys.argv)

コマンド ライン オプションを解析するためのモジュールが 2 つoptparseありargparseますgetopt。スクリプトにファイルを入力するだけの場合は、fileinput.

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

于 2008-09-16T09:50:40.990 に答える
486
var = raw_input("Please enter something: ")
print "you entered", var

または Python 3 の場合:

var = input("Please enter something: ")
print("You entered: " + var)
于 2008-09-16T09:48:16.487 に答える
205

raw_inputPython 3.x では使用できなくなりました。しかし、raw_input名前が変更されinputたため、同じ機能が存在します。

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

変更の文書化

于 2011-11-30T22:53:49.487 に答える
33

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

raw_input()ユーザー入力を取得するために使用します。readline moduleユーザーをインポートすると、行の編集と履歴が表示されます。

于 2008-09-16T09:48:40.263 に答える
19

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

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'>
于 2015-05-20T05:33:16.743 に答える
19

input自分が何をしているのかわからない場合は、関数を使用しないように注意してください。とは異なりraw_inputinput任意の python 式を受け入れるので、ちょっと似ていますeval

于 2008-09-16T09:58:33.360 に答える
12

コンソール/端末からの入力には「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 モジュールを使用します。

ペヴ

于 2008-09-16T09:52:24.620 に答える
10

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)
于 2012-10-26T15:29:14.753 に答える
7

Pythonの時点で3.22.7 では、コマンド ライン引数を処理するためのargparseが追加されました。

于 2010-08-06T20:00:22.570 に答える
7

3.x バージョンの場合は、次のようにします。

variantname = input()

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

x = input()
8

x は 8 になりますが、別の方法で定義しない限り、文字列になります。

したがって、次のような convert コマンドを使用できます。

a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
于 2017-02-17T18:31:13.250 に答える