web-dev-qa-db-ja.com

Pythonのコマンドライン入力

最初にプログラムを実行してから、コマンドラインでユーザーの入力を待つことは可能ですか?例えば.

Run...

Process...

Input from the user(in command line form)...

Process...
30
Viin

OPが何を意味したのかはまったく明確ではありません(コメントの前後を何度か行った後でも)が、質問の考えられる解釈に対する2つの答えがあります。

インタラクティブなユーザー入力(またはパイプされたコマンドまたはリダイレクトされた入力)

Python 2.xのraw_inputおよびPython 3.のinputを使用します(これらは組み込まれているため、何もインポートする必要はありませんそれらを使用してください;あなたのPythonのバージョンに適切なものを使用するだけです。)

例えば:

user_input = raw_input("Some input please: ")

詳細は こちら をご覧ください。

したがって、たとえば、次のようなスクリプトがあるとします

# First, do some work, to show -- as requested -- that
# the user input doesn't need to come first.
from __future__ import print_function
var1 = 'tok'
var2 = 'tik'+var1
print(var1, var2)

# Now ask for input
user_input = raw_input("Some input please: ") # or `input("Some...` in python 3

# Now do something with the above
print(user_input)

これをfoo.pyに保存した場合は、コマンドラインからスクリプトを呼び出すだけで、tok tiktokが出力され、入力を求められます。 bar baz(Enterキーが後に続く)を入力すると、bar bazが出力されます。これは次のようになります。

$ python foo.py
tok tiktok
Some input please: bar baz
bar baz

ここで、$はコマンドラインプロンプトを表し(実際には入力しない)、入力を求められたときにbar bazと入力した後、Enterを押します。

コマンドライン引数の場合

foo.pyという名前のスクリプトがあり、次のようなコマンドラインから引数barおよびbazを指定して呼び出すとします。

$ foo.py bar baz

(繰り返しますが、$はコマンドラインプロンプトを表します。)それから、スクリプトで次のように実行できます。

import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]

ここでは、変数arg1には文字列'bar'が含まれ、arg2には'baz'が含まれます。オブジェクトsys.argvは、コマンドラインからのすべてを含む単なるリストです。 sys.argv[0]はスクリプトの名前であることに注意してください。また、たとえば、すべての引数の単一のリストが必要な場合は、sys.argv[1:]を使用します。

80
Mike

入力するだけ

the_input = raw_input("Enter input: ")

以上です。

さらに、入力のリストを作成する場合は、次のようなことができます。

a = []

for x in xrange(1,10):
    a.append(raw_input("Enter Data: "))

その場合、9つのアイテムをリストに保存するためにデータを10回要求されます。

出力:

Enter data: 2
Enter data: 3
Enter data: 4
Enter data: 5
Enter data: 7
Enter data: 3
Enter data: 8
Enter data: 22
Enter data: 5
>>> a
['2', '3', '4', '5', '7', '3', '8', '22', '5']

そのリストを基本的な方法で検索できます(リストを作成した後)。

if '2' in a:
    print "Found"

それ以外の場合:「見つかりません」と出力します。

次のように、「2」を「raw_input()」に置き換えることができます。

if raw_input("Search for: ") in a:
    print "Found"
else: 
    print "Not found"

コマンドラインインターフェイスを介して入力ファイルから生データを取得する

コマンドラインから入力するファイルから入力を取得する場合(通常、Google Code JamやACM/IBM ICPCなどの競技会でコードの問題を行うときに必要なものです):

example.py

while(True):
    line = raw_input()
    print "input data: %s" % line

コマンドラインインターフェースで:

example.py < input.txt

お役に立てば幸いです。

12
Mr_Spock

Python 3を使用している場合、raw_inputinputに変更されました

Python 3の例:

line = input('Enter a sentence:')
10
Mike Helmick

次の行でスクリプトを開始します。スクリプトが最初に実行され、pythonコマンドプロンプトが表示されます。この時点で、すべての変数と関数は、インタラクティブな使用と呼び出しに使用できます。

#!/ usr/bin/env python -i

1
user8391127