使用PyCharm创建脚本参数 - 以艰难的方式学习Python

时间:2016-03-08 03:41:29

标签: python pycharm

我开始学习Python,学习Python艰难的方式,我正面临ex13的一些问题。我想现在,如果这是我的错误或因为PyCharm的工作方式。

基本上,为了使脚本工作,因为练习建议我看到我必须在运行>编辑配置

的PyCharm中手动输入参数名称

我把"第一" "第二"和"第三"

但我想结合raw_input和argv,这样我就可以让用户选择参数的名称。这是我写的:

from sys import argv

first = raw_input("First argument: ")
second = raw_input("Second argument: ")
third = raw_input("Third argument: ")

script, first, second, third = argv

print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third

它会运行,但会返回:

ValueError: need more than 1 value to unpack

似乎在PyCharm中我必须手动输入所有脚本参数?没有办法将它与原始输入结合起来吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

note 查看Joran's回答,其中显示了使用命令行参数和提示用户输入的良好组合。以下是对正在发生的事情的细分:

这是PyCharm中预期的行为,用于指定希望PyCharm执行脚本的参数。想想它就像PyCharm这样做:

python my_script.py

但是,PyCharm不知道你要传递的参数,你需要提供它,所以它知道如何运行你的脚本。如果您看近PyCharm窗口的底部,则会有一个Terminal标签。您可以使用它来快速执行脚本并提供args。

其次,您收到错误的原因是因为您在尝试使用argv时没有正确处理脚本输入。

你正在使用raw_input混合,它在你的Python脚本运行时接受用户输入,而不是argv在运行它时将参数输入你的Python脚本。

因此,您希望在此处实际执行的操作不是raw_input,而是使用argv。这是一个小型演示来澄清所有这些:

from sys import argv

script, first, second, third = argv

print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third

现在,进入命令提示符并执行以下操作:

python my_script one two three

你会得到:

The script is called: my_script.py
Your first variable is: one
Your second variable is: two
Your third variable is: three

这是一个非常简化的示例,您可能需要添加一些输入处理,或者您将在脚本的不同输入中获得大量错误。有了这个,我建议可能会看argparse而不是

答案 1 :(得分:2)

我不确定我理解这个问题......但如果有3个(或更多),下面的代码将使用命令行参数...否则它将以与shell拆分命令行参数相同的方式提示和拆分

import shlex # shlex.split will split the string the same way that the shell would for command line args

if len(sys.argv) < 3:
   args = (list(sys.argv) + shlex.split(raw_input("Enter Args:")))[:3]
else:
   args = sys.argv[:3]

print "Using Args:",args
one,two,three = args