我开始学习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中我必须手动输入所有脚本参数?没有办法将它与原始输入结合起来吗?
感谢您的帮助。
答案 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