python中的命令行输入

Command line input in Python

是否可以先运行程序,然后在命令行中等待用户的输入。例如

1
2
3
4
5
6
7
Run...

Process...

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

Process...


一点也不清楚OP的含义(即使在评论中反复提到),但以下是对问题可能解释的两个答案:

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

在python 2.x中使用raw_input,在python 3中使用input。(这些是内置的,所以您不需要导入任何东西来使用它们;您只需要为您的Python版本使用正确的一个。)

例如:

1
user_input = raw_input("Some input please:")

在这里可以找到更多的细节。

例如,您可能有这样一个脚本

1
2
3
4
5
6
7
8
9
10
11
12
# 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。这就是它的样子:

1
2
3
4
$ python foo.py
tok tiktok
Some input please: bar baz
bar baz

这里,$表示命令行提示(所以实际上您不需要输入),我在输入bar baz后点击Enter

用于命令行参数

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

1
$ foo.py bar baz

(同样,$表示命令行提示。)然后,您可以使用脚本中的以下内容来执行此操作:

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

这里,变量arg1将包含字符串'bar'arg2将包含'baz'。对象sys.argv只是一个包含命令行中所有内容的列表。注意,sys.argv[0]是脚本的名称。例如,如果您只需要一个包含所有参数的列表,那么您将使用sys.argv[1:]


只是接受输入

1
the_input = raw_input("Enter input:")

就是这样。

此外,如果要列出输入,可以执行以下操作:

1
2
3
4
a = []

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

在这种情况下,将要求您10次获取数据,以便在列表中存储9个项目。

输出:

1
2
3
4
5
6
7
8
9
10
11
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']

你可以用如下的方法来搜索这个列表(在创建这个列表之后):

1
2
if '2' in a:
    print"Found"

其他:打印"未找到"。

您可以将"2"替换为"raw_input()",如下所示:

1
2
3
4
if raw_input("Search for:") in a:
    print"Found"
else:
    print"Not found"

通过命令行接口从输入文件获取原始数据

如果您想从您通过命令行提供的文件中获取输入(这通常是您在比赛中遇到代码问题时所需要的,如Google代码堵塞或ACM/IBM ICPC):

实例

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

在命令行界面中:

1
example.py < input.txt

希望有帮助。


如果您使用的是python 3,那么raw_input已经改为input

python 3示例:

1
line = input('Enter a sentence:')

用以下行开始脚本。脚本将首先运行,然后得到python命令提示。此时,所有变量和函数都可用于交互使用和调用。

哎呀!/usr/bin/env python-i