Python中的命令行输入
是否可以先运行程序,然后在命令行中等待用户的输入。 e、 gPython中的命令行输入,python,command-line,input,python-2.7,user-input,Python,Command Line,Input,Python 2.7,User Input,是否可以先运行程序,然后在命令行中等待用户的输入。 e、 g 关于OP的含义(即使在评论中反复出现了一些内容)一点也不清楚,但以下是对该问题可能的解释的两个答案: 用于交互式用户输入(或管道命令或重定向输入) 在Python2.x中使用raw_input,在Python3中使用input。(这些都是内置的,因此您不需要导入任何内容就可以使用它们;您只需为您的python版本使用正确的版本即可。) 例如: user_input = raw_input("Some input please: ")
关于OP的含义(即使在评论中反复出现了一些内容)一点也不清楚,但以下是对该问题可能的解释的两个答案: 用于交互式用户输入(或管道命令或重定向输入) 在Python2.x中使用
raw_input
,在Python3中使用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
这里,$
表示命令行提示符(因此您实际上不需要键入该提示符),当它请求输入时,我在键入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://code>仅获取输入
就这样
此外,如果您想列出输入,可以执行以下操作:
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']
您可以使用以下基本方法搜索该列表(创建该列表后):
其他:
打印“未找到”
您可以将“2”替换为“raw_input()”,如下所示:
if raw_input("Search for: ") in a:
print "Found"
else:
print "Not found"
通过命令行接口从输入文件获取原始数据
如果您希望从通过命令行提供的文件中获取输入(这通常是您在为竞赛(如Google code Jam或ACM/IBM ICPC)处理代码问题时所需要的):
示例.py
while(True):
line = raw_input()
print "input data: %s" % line
在命令行界面中:
example.py < input.txt
example.py
希望对您有所帮助。如果您使用的是Python 3,raw\u input
已更改为input
Python 3示例:
line = input('Enter a sentence:')
用以下行开始脚本。脚本将首先运行,然后您将得到python命令提示符。此时,所有变量和函数都可供交互使用和调用
#!/usr/bin/env python-i谢谢,但我需要命令行参数,而不是用户提示。可能吗?哦,是的。“我会改变我的答案的。”如果你退后一步,你为什么需要这个?原始输入可以传送到子进程以执行shell命令,使用readline将提供制表符完成。谢谢Mike,但是有没有一种方法可以在命令行表单中进行交互式用户输入?我不知道你的意思,除了交互式的原始输入
。因此,您可以从命令行调用脚本,它可能会先执行一些命令,然后进入raw\u input
行,请求您输入,然后继续。我已经更新了答案的第二部分,为您提供了一个更完整的示例。谢谢,但在命令行表单中仍然没有。这可能吗?您是否向它输入了一个类似“input.txt”的文件,并希望它从该文件中读取?您的意思是向它输入了一个文件或目录的名称?或者,您希望它为您希望程序使用的某些参数读取一个文件?我想我们被你说的“命令行表单”的意思弄糊涂了。是的,这是一个很大的帮助。谢谢你,斯波克先生。上帝保佑,没问题。如果答案是这样,请随意接受。哈哈,我要去StackOverflow!根据常见问题解答,否决票通常意味着这不是一个好问题。虽然这似乎是一个完全正确的问题,但我猜,下层选民认为这是重复的,比如说。作为一个新用户,可以随意访问meta或(在评论中)提问如何改进。这实际上非常有效,但如果能解释一下“我”是什么,那就太好了does@DantePuglisi-我是说互动
while(True):
line = raw_input()
print "input data: %s" % line
example.py < input.txt
line = input('Enter a sentence:')