学习python艰苦的锻炼方式17

时间:2013-02-12 19:06:43

标签: python

获取太多值以从模块中的第4行解压缩。

script, from_file, to_file = argv  line.

练习17例

 from sys import argv
 from os.path import exists

 script, from_file, to_file = argv 

我知道我做的事情很愚蠢。使用python版本2.7.3

这是练习中的逐字复制和粘贴:

from sys import argv
from os.path import exist

script, from_file, to_file = argv

我已经尝试了两种解决方案并获得了无效的sytax错误

3 个答案:

答案 0 :(得分:2)

运行脚本时,需要提供两个命令行参数。假设脚本的名称为test.py,则需要将其作为

运行
python test.py fromfile.txt tofile.txt

然后您的变量script将等于“test.py”,from_file将等于“fromfile.txt”,to_file将等于“tofile.txt”。

答案 1 :(得分:1)

在python中你可以像这样解压缩

my_packed_values = ('v1', 'v2', 'v3')
v1, v2, v3 = my_packed_values
print v1
print v2
print v3

您将逐个获得v1v2v3个字符串。

所以你可以解压缩三个值。如果您执行v1, v2 = my_packed_values,则会收到该错误。

因此,如果argvs没有足够的值来解包(右侧的数字与左侧的数字不匹配),那么你将得到太多的解包。

这不是答案,但在写这个答案时@mbatchkarvo已经指出了实际原因。


os.path.exists,而不是os.path.exist。但这不应该触发语法错误。

答案 2 :(得分:0)

我的建议总是在处理命令行参数时进行一些错误检查,例如。至少像

那样简单
from sys import argv,exit
if not len(argv)==3:
   print "argv is" , argv
   print "expected script fromfile tofile"
   exit()
script, from_file, to_file = argv

交替地,或者更多pythonesque:

from sys import argv,exit
try:
   script, from_file, to_file = argv
except:
   print "argv is" , argv
   print "expected script fromfile tofile"
   exit()

请注意从sys

退出的导入