ввод командной строки в python

<p>можно ли сначала запустить программу, а затем ждать ввода пользователя в командной строке . например.</p><pre><code>run... process... input from the user(in command line form)... process... </code></pre>

<p>совершенно не ясно, что имел в виду фп (даже после некоторых возвратов в комментариях), но вот два ответа на возможные толкования вопроса:</p><h2>для интерактивного пользовательского ввода (или переданных команд или перенаправленного ввода)</h2><p>используйте <code>raw\_input</code> в python 2.x и <code>input</code> в python 3. (они встроены, поэтому вам не нужно ничего импортировать, чтобы использовать их; вам просто нужно использовать правильный для вашей версии python.)</p><p>например:</p><pre><code>user\_input = raw\_input("some input please: ") </code></pre><p>более подробную информацию можно найти <a href="http://docs.python.org/2/library/functions.html#raw\_input">здесь</a> .</p><p>так, например, у вас может быть скрипт, который выглядит так</p><pre><code># 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) </code></pre><p>если вы сохранили это в <code>foo.py</code>, вы можете просто вызвать скрипт из командной строки, он выведет <code>tok tiktok</code>, а затем запросит ввод. вы можете ввести <code>bar baz</code> (за которым следует ключ ввода), и он напечатает <code>bar baz</code>. вот как это будет выглядеть:</p><pre><code>$ python foo.py tok tiktok some input please: bar baz bar baz здесь $</code> представляет приглашение командной строки (так что вы на самом деле не вводите его), и я нажимаю <code>enter</code> после ввода <code>bar baz</code>, когда он запрашивает ввод.</p><h2>для аргументов командной строки</h2><p>предположим, у вас есть скрипт с именем <code>foo.py</code> и вы хотите вызвать его с аргументами <code>bar</code> и <code>baz</code> из командной строки, например</p><pre><code>$ foo.py bar baz (опять же, $</code> представляет приглашение командной строки.) затем вы можете сделать это с помощью следующего в вашем скрипте:</p><pre><code>import sys arg1 = sys.argv[1] arg2 = sys.argv[2] </code></pre><p>здесь переменная <code>arg1</code> будет содержать строку <code>'bar'</code>, а <code>arg2</code> будет содержать <code>'baz'</code>. объект <code>sys.argv</code> - это просто список, содержащий все из командной строки. обратите внимание, что <code>sys.argv[0]</code> - это имя скрипта. и если, например, вам нужен только один список всех аргументов, вы должны использовать <code>sys.argv[1:]</code>.</p>

<h2>просто принимая вход</h2><pre><code>the\_input = raw\_input("enter input: ") </code></pre><p>и это все. </p><p>более того, если вы хотите составить список входных данных, вы можете сделать что-то вроде:</p><pre><code>a = [] for x in xrange(1,10): a.append(raw\_input("enter data: ")) </code></pre><p>в этом случае вам будет предложено ввести данные 10 раз, чтобы сохранить 9 элементов в списке.</p><p>результат: </p><pre><code>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'] </code></pre><p>вы можете искать этот список основным способом с помощью чего-то вроде (после создания этого списка):</p><pre><code>if '2' in a: print "found" </code></pre><p>еще: печать "не найдено".</p><p>вы можете заменить «2» на «raw\_input ()» следующим образом:</p><pre><code>if raw\_input("search for: ") in a: print "found" else: print "not found" </code></pre><h2>получение сырых данных из входного файла через интерфейс командной строки</h2><p>если вы хотите получить входные данные из файла, который вы передаете через командную строку (это обычно то, что вам нужно для решения проблем с кодом на соревнованиях, таких как google code jam или acm/ibm icpc):</p><p><strong> example.py </strong></p><pre><code>while(true): line = raw\_input() print "input data: %s" % line </code></pre><p>в интерфейсе командной строки:</p><pre><code>example.py < input.txt </code></pre><p>надеюсь, это поможет.</p>

<p>если вы используете python 3, <code>raw\_input</code> изменился на <code>input</code></p><p>пример python 3:</p><pre><code>line = input('enter a sentence:') </code></pre>

<p>запустите ваш скрипт со следующей строки. сначала запустится скрипт, а затем вы получите команду python prompt. на данный момент все переменные и функции будут доступны для интерактивного использования и вызова.</p><p>#!/usr/bin/env python -i</p>