Pythonメモ - getoptの使い方

getoptについて

getoptを使うことで,コマンドラインのオプションの解析を行うことができるようなのでメモ.
argparseという別のモジュールもあるようなので,おいおい調査します.

基本文法

import getopt
opts,args = getopt.getopt(args, shortopts, longopts=[])
引数 説明 Example
args 解析する対象でリスト形式.
ふつうはsys.argv[1:]でOK
["-t","127.0.0.1","-p","8080","--message","helloworld","-hogehoge"]
shortopts 短い形式のオプションを文字列で与える.
引数が必要なオプションに対しては,コロンを付ける.
"t:p:m:h"
longopts 長い形式のオプションをリスト形式で与える.
引数が必要なオプションに対しては,イコールを付ける.
["-target=","-port=","-message=","-hogehoge"]

optsにはオプションと引数のタプルが返却され,argsにはそれ以外の引数が返却されます.

実例

def show_opts(text):
	try:
		opts,args = getopt.getopt(
			text,
			"t:p:m:h",
			["target=", "port=", "message=", "hogehoge"]
		)
		print("Options:", opts)
		print("Arguments:", args)
	except getopt.GetoptError as err:
		print(str(err))

>>> text = "-t 127.0.0.1 -p 8888 --message hello --hogehoge"
>>> show_opts(text.split(" "))
Options: [('-t', '127.0.0.1'), ('-p', '8888'), ('--message', 'hello'), ('--hogehoge', '')]
Arguments: []

>>> text = "--target 127.0.0.1 --port 8888 -m hello -h arg1 arg2 arg3 arg4"
>>> show_opts(text.split(" "))
Options: [('--target', '127.0.0.1'), ('--port', '8888'), ('-m', 'hello'), ('-h', '')]
Arguments: ['arg1', 'arg2', 'arg3', 'arg4']