一般的には、他に方法がない場合はフラグを使いたい部分を別関数にすることで避けることができます。
python
1def argCheckSub(args):
2 if len(args) != 2:
3 return 'error', 'this command accept one option only'
4 elif args[1].split('.')[1] != 'txt':
5 return 'error', 'please specify ".txt" file'
6 else:
7 return 'OK', 'OK'
8
9def argCheck():
10 result, message = argCheckSub(sys.argv)
11 if result == 'error':
12 print(message)
13 sys.exit(1)
14 else:
15 pass
このようにしておくことで、argCheckSubだけのテストも簡単にできるようになります。
python
1>>> argCheckSub(['', 'a.txt'])
2('OK', 'OK')
3>>> argCheckSub(['', 'atxt'])
4Traceback (most recent call last):
5 File "<stdin>", line 1, in <module>
6 File "<stdin>", line 4, in argCheckSub
7IndexError: list index out of range
このエラーが出るのは、atxt のように"."のない名前の場合です。エラーが簡単に検出できることは、保守性向上にもつながりますので、別関数化は役に立ちます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/28 11:52
2021/03/28 11:56
2021/03/28 11:59