我开始学习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 中我必须手动输入所有脚本参数?没有办法将其与原始输入相结合?
感谢您的帮助。
注释查看Joran的答案,该答案显示了使用命令行参数和提示用户输入的良好组合。以下是正在发生的事情的细分:
这是 PyCharm中的预期行为,用于指定您希望 PyCharm 用来执行脚本的参数。把它想象成PyCharm做这样的事情:
python my_script.py
但是,PyCharm 不知道您要传递的参数,您需要提供此参数,因此它知道如何运行您的脚本。如果您查看 PyCharm 窗口底部附近,则会显示一个Terminal
选项卡。您可以使用它来快速执行脚本并提供参数。
其次,您收到错误的原因是因为您在尝试使用argv
时没有正确处理脚本输入。
您正在使用 raw_input
进行混合,它在 Python 脚本运行时接收用户输入,而不是在运行 Python 脚本时将参数引入 Python 脚本的argv
。
所以,你在这里实际要做的,不是使用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
我不确定我是否理解这个问题...但是如果有 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