通常,我在命令行中使用一个参数运行此脚本: python myscript.py参数
但如果缺少这个参数,我希望显示错误消息:
用法:myscript.py[文件…]
脚本:
import sys
from lxml import etree
filename = sys.argv[1]
tree = etree.parse(filename)
def f1():
...
def main():
if len(sys.argv) < 2:
print 'usage: extract.py [file ...]'
sys.exit(1)
else:
f1()
在我开始工作之前,我可以在没有争论的情况下得到错误消息,但是现在它停止工作了,我不明白为什么。。。 只有在不使用命令行的参数运行脚本时,才会收到此消息:
Traceback (most recent call last):
File "myscript.py", line 14, in <module>
filename = sys.argv[1]
IndexError: list index out of range
行
filename = sys.argv[1]
首先运行。未达到您的len()
测试。将设置
filename
和tree
移到main()
函数中,并且不要在此处使用全局变量:与其这么做,不如使用python中的
argparse
模块。如果没有提供参数,它将自动打印如下的usage语句type=argparse.FileType('r')
参数不是必需的,但最好使用它。'r'
表示并检查文件是否可读或存在。类似地,您可以使用
'w'
检查传递的文件是否可写。输出:
正如Martijn所说,
sys.argv[1]
在测试之前被引用。我更喜欢将测试移到calling子句中,而不是main,如下所示:
我觉得这在代码中提供了更合理的职责划分。
相关问题 更多 >
编程相关推荐