import getopt
import sys
r"""
getopt.getopt(sys.argv[1:], "hf:", ["help", "file="])
sys.argv[1:]:这是要解析的命令行参数列表。sys.argv 是一个包含命令行参数的列表,其中 sys.argv[0] 是脚本名称,sys.argv[1:] 则是脚本后面的所有参数。
例如,如果命令行输入是 script.py -f example.txt,那么 sys.argv 为 ['script.py', '-f', 'example.txt'],sys.argv[1:] 则为 ['-f', 'example.txt']。
"hf:":这是短选项字符串。每个字符代表一个短选项,如果选项后面跟一个冒号 :,表示该选项需要一个参数。在这个例子中:
-h:表示一个不需要参数的选项。
-f:表示一个需要参数的选项。
["help", "file="]:这是长选项列表。每个元素是一个字符串,表示一个长选项。如果选项后面跟一个等号 =,表示该选项需要一个参数。在这个例子中:
help:表示一个不需要参数的长选项。
file=:表示一个需要参数的长选项。
返回值
getopt.getopt 函数返回一个元组 (opts, args):
opts:是一个列表,每个元素是一个 (option, value) 形式的元组,表示选项和对应的值。例如:
如果命令行输入是 script.py -h,那么 opts 为 [('-h', '')]。
如果命令行输入是 script.py -f example.txt,那么 opts 为 [('-f', 'example.txt')]。
如果命令行输入是 script.py --file example.txt,那么 opts 为 [('--file', 'example.txt')]。
args:是一个列表,包含那些不是选项的剩余命令行参数。例如:
如果命令行输入是 script.py -f example.txt extra1 extra2,那么 args 为 ['extra1', 'extra2']。
"""
def main():
try:
opts,args = getopt.getopt(sys.argv[1:],"hf:",["help","file="])
except getopt.GetoptError as err:
print("error:",err)
exit(0)
for opt,arg in opts:
if opt in ("-h","--help"):
print(f"Usage:{sys.argv[0]} [options]")
print("Options:")
print(" -h, --help show this help message and exit")
print(" -f, --file <filename> specify the filename")
exit(0)
elif opt in ("-f","--file"):
print(f"Filename:{arg}")
exit(0)
print("Remaining arguments:",args)
if __name__ == '__main__':
main()