Python中的命令行输入

时间:2013-04-23 21:56:40

标签: python command-line input python-2.7 user-input

是否可以首先运行程序然后在命令行中等待用户的输入。 e.g。

Run...

Process...

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

Process...

4 个答案:

答案 0 :(得分:78)

OP的含义一点也不清楚(即使在评论中有些来回),但这里有两个可能解释问题的答案:

用于交互式用户输入(或管道命令或重定向输入)

在Python 2.x中使用raw_input,在Python 3中使用input。(这些是内置的,因此您无需导入任何内容即可使用它们;您只需使用你的python版本就是一个。)

例如:

user_input = raw_input("Some input please: ")

可以找到更多详细信息here

因此,例如,您可能有一个看起来像这样的脚本

# 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(后跟输入键),然后输出bar baz。这就是看起来的样子:

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

此处,$表示命令行提示符(因此您实际上并未键入该提示符),并且在请求输入时键入Enter后点击bar baz

对于命令行参数

假设您有一个名为foo.py的脚本,并希望从命令行使用参数barbaz调用它,如

$ 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:]

答案 1 :(得分:12)

只是输入

the_input = raw_input("Enter input: ")

就是这样。

此外,如果您想制作输入列表,可以执行以下操作:

a = []

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

在这种情况下,系统会要求您提供10次数据,以便在列表中存储9个项目。

输出:

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

希望有所帮助。

答案 2 :(得分:10)

如果您使用的是Python 3,则raw_input已更改为input

Python 3示例:

line = input('Enter a sentence:')

答案 3 :(得分:1)

使用以下行启动脚本。该脚本将首先运行,然后您将获得python命令提示符。此时,所有变量和函数都可用于交互式使用和调用。

#!/ usr / bin / env python -i