当前位置:  开发笔记 > 编程语言 > 正文

如果sys.argv完全通过,为什么getopt不工作?

如何解决《如果sys.argv完全通过,为什么getopt不工作?》经验,为你挑选了2个好方法。

如果我使用它getopt:

import getopt
import sys

opts,args = getopt.getopt(sys.argv,"a:bc")
print opts
print args

opts将是空的.不会创建任何元组.但是,如果我将使用sys.argv[1:],一切都按预期工作.我不明白为什么会这样.有人在乎解释吗?



1> mipadi..:

sys.argv(sys.argv[0])的第一个元素是当前正在执行的脚本的名称.因为此脚本名称(可能)不是有效参数(并且可能不以a -或者--任何方式开头),getopt所以不会将其识别为参数.由于工作方式的性质getopt,当它看到的东西不是命令行标志(不是以-或开头的东西--)时,它会停止处理命令行选项(并将其余的参数放入args),因为它假设其余参数是将由程序处理的项(例如文件名或其他"必需"参数).



2> Alan..:

这是设计的.回想一下,sys.argv [0]是正在运行的程序名,而getopt不需要它.

来自文档:

解析命令行选项和参数列表.args是要解析的参数列表,没有对正在运行的程序的引用引用.通常,这意味着sys.argv [1:].options是脚本想要识别的选项字母串,其中的选项需要一个参数后跟冒号(':';即,与Unix getopt()使用的格式相同).

http://docs.python.org/library/getopt.html

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有