使用功能不适用于 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 中使用
滚动单击不适用于 NavigationManager.NavigateTo,我无法使用 href,因为我需要 forceLoad 功能