python 文件名字: test_getopt.py
python 文件执行参数:python test_getopt.py -p:8888 -ip:127.0.0.1
test_getopt.py 代码:
#!/usr/bin/env python
import getopt
import sys
def main():
"""
python test_getopt.py -i:127.0.0.1 -p:8888
"""
options, args = getopt.getopt(sys.argv[1:], 'p:i:')
for name, value in options:
if name in ('-i'):
# value is 127.0.0.1
print ("value: {0}".format(value))
if name in ('-p'):
# value is 8888
print ("value: {0}".format(value))
if __name__ == "__main__":
main()
如果你是这样运行的代码:python test_getopt.py -i:127.0.0.1 -p:8888. 那么在上边的代码中-i的name值就是127.0.0.1 -p的name值就是8888,getopt.getopt(sys.argv[1:], 'p:i:') 第一个参数就是取文件名后边的参数, 第二个参数‘p:i:’ 就是你命令行的参数是带一个'-'符号的, ':' 符号是你的参数必须有值:例如:-i:127.0.0.1.
你也可以加入-h选项,当别人输入python test_getopt.py -h 的时候会看到help的信息。代码如下
#!/usr/bin/env python
import getopt
import sys
def usage():
print ("==========")
print ("Usage:")
print (". xxxxxxx")
print (". xxxxxxx")
print ("==========")
def main():
"""
python test_getopt.py -h
"""
options, args = getopt.getopt(sys.argv[1:], 'h')
for name, value in options:
if name in ('-h'):
usage()
if __name__ == "__main__":
main()
上边的代码实例都是参数是带一个‘-’符号的, 你也可以使用带‘--’符号的参数, 代码如下:
#!/usr/bin/env python
import getopt
import sys
def usage():
print ("=======")
print ("Usage:")
print ("python test_getopt.py -I:127.0.0.1 -p:8888 66 88 or python test_getopt.py --ip=127.0.0.1 --port=8888 66 88")
print ("=======")
def main():
"""
getopt 模块的用法
"""
options, args = getopt.getopt(sys.argv[1:], 'hp:i:', ['help', 'port=', 'ip='])
for name, value in options:
if name in ('-h', '--help'):
usage()
if name in ('-p', '--port'):
print ('value: {0}'.format(value))
if name in ('-i', '--ip'):
print ('value: {0}'.format(value))
for name in args:
# name 的值就是 上边参数实例里边的66和88
print ("name: {0}".format(name))
if __name__ == "__main__":
main()