使用功能不适用于 getopt

Posted

技术标签:

【中文标题】使用功能不适用于 getopt【英文标题】:usage function doesn't work with getopt 【发布时间】:2011-11-25 06:41:07 【问题描述】:

我对 Python 中的使用函数有疑问。这是我主要功能的一部分:

def main(argv):
    try:
            opts, args = getopt.getopt(argv, 'hi:o:tbpms:', ['help', 'input=', 'output='])
            if not opts:
                    print 'No options supplied'
                    usage()
    except getopt.GetoptError,e:
           print e
           usage()
           sys.exit(2)

    for opt, arg in opts:
            if opt in ('-h', '--help'):
                    usage()
                   sys.exit(2)
if __name__ =='__main__':
    main(sys.argv[1:])

我也定义了一个使用函数

def usage():
    print "\nThis is the usage function\n"
    print 'Usage: '+sys.argv[0]+' -i <file1> [option]'

但是当我以./code.py./code.py -h(它是可执行的)运行我的代码时,除了 Python 帮助之外,我得到了任何帮助。

【问题讨论】:

“除了 python 帮助之外的任何东西”是什么意思?在每种情况下,输出到底是什么?您的代码似乎是正确的。 usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... 您需要向我们展示更多代码。在您粘贴的内容中,我看不到是什么触发了 Python 使用行。 我在使脚本可执行并添加 #! 后运行了您的脚本/usr/bin/python 到文件的顶部。它调用使用函数就好了。 【参考方案1】:

以下内容对我有用。使用“python code.py”运行它。

import getopt, sys

def usage():
  print "\nThis is the usage function\n"
  print 'Usage: '+sys.argv[0]+' -i <file1> [option]'

def main(argv):
  try:
    opts, args = getopt.getopt(argv, 'hi:o:tbpms:', ['help', 'input=', 'output='])
    if not opts:
      print 'No options supplied'
      usage()
  except getopt.GetoptError,e:
    print e
    usage()
    sys.exit(2)

  for opt, arg in opts:
    if opt in ('-h', '--help'):
      usage()
      sys.exit(2)

if __name__ =='__main__':
    main(sys.argv[1:])

【讨论】:

“我没有收到错误”并不是对“为什么我收到错误”的回答。 @agf 是的,这是真的。这是为了防止他的真正目标是获得工作代码。如果他只对了解他的代码为什么不起作用感兴趣,我想这没什么帮助。 感谢您的帮助,从 if opt in ('-h', '--help'): 中删除 - 似乎对我有用...谢谢 +1 回答,但我不明白为什么你有 'tbpms:' 短选项。它们没有在任何地方使用,也没有我阅读的任何相应的长选项。

以上是关于使用功能不适用于 getopt的主要内容,如果未能解决你的问题,请参考以下文章

带有 Excel 的 Datatables TableTools,pdf 导出功能不适用于 firefox,但只能在 Chrome 中使用

ajax成功功能不适用于数据表

Eclipse 自动完成功能不适用于 PHP 项目

Angularjs 不适用于 Jquery 加载功能

滚动单击不适用于 NavigationManager.NavigateTo,我无法使用 href,因为我需要 forceLoad 功能

修饰符“覆盖”不适用于“本地功能”