学习python硬盘练习17
从模块中的第4行解压太多值。学习python硬盘练习17
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
我用尽两个解决方案,并在运行脚本得到一个无效的错误的语法时才
,你需要提供两个命令行参数。假设脚本是test.py
的名称,你需要运行它
python test.py fromfile.txt tofile.txt
然后您的变量script
将等于“test.py”,from_file
将等于“fromfile.txt”和to_file
将等于“tofile.txt ”。
给我一个无效的语法错误 – Battle 2013-02-12 19:26:46
你如何运行你发布的脚本?从命令行或从一些文本编辑器内?我的解决方案假定您从命令行运行,否则您需要在编辑器中找到“脚本参数”选项。 – mbatchkarov 2013-02-12 19:33:26
在Python中,你可以解开值这样
my_packed_values = ('v1', 'v2', 'v3')
v1, v2, v3 = my_packed_values
print v1
print v2
print v3
,你会得到v1
,v2
,v3
串一次一个。
所以你可以解压三个值。如果你这样做v1, v2 = my_packed_values
,你会得到这个错误。
因此,如果argvs
没有足够的值解包(右侧的数字与左侧的数字不匹配),您将得到太多的解包。
这不是一个答案,但在写这个答案@mbatchkarvo已经指出了实际的原因。
有os.path.exists
,不os.path.exist
。但是这不应该触发语法错误。
感谢您尝试目前实现此逻辑。 – Battle 2013-02-12 19:27:49
现在我越来越无法导入名称存在 – Battle 2013-02-12 19:38:13
@ user2065893看到我的评论和编辑。你写'退出'不'存在'。在单词的末尾加上's'即可。你应该没问题。 – CppLearner 2013-02-12 19:42:10
我的建议总是在处理命令行参数时做一些错误检查,例如。至少一些简单的像
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
我在哪里添加错误检查行? – Battle 2013-02-12 19:43:25
进口什么argv'的'的价值,你是如何运行脚本? – millimoose 2013-02-12 19:08:45
如果有疑问,只需在发生错误的行之前快速执行'print argv'或'print',并且大部分时间您都可以轻松发现问题所在。 – Krachtwerk 2013-02-12 19:19:24
刚刚尝试过,仍然得到相同的错误。 – Battle 2013-02-12 19:25:54