今天按照LPTHW习题13中给出的例子:
<span style="font-size:14px;">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)</span>
使用IDLE编译的时候发现会报错,
然后百度了一下need more than 1 value to unpack
结果都是需要在命令行下运行脚本,并且传递4个参数。
然后我用下面的办法:
先找到我存放平时练习用.py文件的文件夹exercise
接着按住shift并且右键单击,选择以命令行方式打开,就进入到相应的目录下了。
环境变量的问题不想再说了!自己解决!
然后运行刚才的脚本,如果只输入13_1.py就会输出:
还是提示有错误
接下来输入13_1.py 1 2 3
发现运行没错了,四个参数默认为文件路径,1,2,3,四个参数输出。
接下来再测试,输入python 13_1.py 1 2 3
现在就是文件名和 1 2 3的输出了。
那么,就该分析一下argv的使用了
首先,我们利用import语句 输入 sys模块。基本上,这句语句告诉Python,我们想要使用这个模块。sys模块包含了与Python解释器和它的环境有关的函数。
当Python执行import sys语句的时候,它在sys.path变量中所列目录中寻找sys.py模块。如果找到了这个文件,这个模块的主块中的语句将被运行,然后这个模块将能够被你 使用 。注意,初始化过程仅在我们 第一次 输入模块的时候进行。另外,“sys”是“system”的缩写。
sys模块中的argv变量通过使用点号指明——sys.argv——这种方法的一个优势是这个名称不会与任何在你的程序中使用的argv变量冲突。另外,它也清晰地表明了这个名称是sys模块的一部分。
sys.argv变量是一个字符串的 列表 。特别地,sys.argv包含了 命令行参数 的列表,即使用命令行传递给你的程序的参数。
如果你使用IDE编写运行这些程序,请在菜单里寻找一个指定程序的命令行参数的方法。
这里,当我们执行python 13—_1.py 1 2 3的时候,我们使用python命令运行13_1.py模块,后面跟着的内容被作为参数传递给程序。Python为我们把它存储在sys.argv变量中。
记住,脚本的名称总是sys.argv列表的第一个参数。所以,在这里,'13_1.py'是sys.argv[0]、'1是sys.argv[1]、'2'是sys.argv[2]以及'3'是sys.argv[3]。注意,Python从0开始计数,而非从1开始。
sys.path包含输入模块的目录名列表。我们可以观察到sys.path的第一个字符串是空的——这个空的字符串表示当前目录也是sys.path的一部分,这与PYTHONPATH环境变量是相同的。这意味着你可以直接输入位于当前目录的模块。否则,你得把你的模块放在sys.path所列的目录之一。