-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtemplate2.py
More file actions
123 lines (103 loc) · 3.22 KB
/
template2.py
File metadata and controls
123 lines (103 loc) · 3.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import argparse
import dataclasses
import datetime
import glob
import json
import logging
import os
import pathlib
import sys
import typing
import system_loader
__version__ = "0.0.0"
@dataclasses.dataclass
class SimpleArgs(object):
src: str
dst: str
foo: str
optional_num: int
sw1: bool
sw2: bool
inputs: list
def simple_setup_logger(logFileName: typing.Optional[str] = None, modname=__name__):
logger = logging.getLogger(modname)
logger.setLevel(logging.DEBUG)
datefmt = "%Y-%m-%d %H:%M:%S"
formatter = logging.Formatter(
"%(asctime)s.%(msecs)03d\t%(levelname)s\t%(message)s", datefmt
)
sh = logging.StreamHandler()
sh.setLevel(logging.DEBUG)
sh.setFormatter(formatter)
logger.addHandler(sh)
if logFileName:
fh = logging.FileHandler(logFileName, encoding="utf-8")
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
logger.addHandler(fh)
return logger
def main():
"""Sample code"""
parser = argparse.ArgumentParser(description=main.__doc__)
parser.add_argument(
"src", default="src_dir", type=str, help="source directory (src_dir)"
)
parser.add_argument(
"dst", default="dst_dir", type=str, help="destination directory (dst_dir)"
)
parser.add_argument(
"--foo", default="test", type=str, help="optional string foo (test)"
)
parser.add_argument(
"--optional-num", default=5, type=int, help="intのみを受け付けるオプション (5)"
)
parser.add_argument(
"--sw1", action="store_true", help="switch 1, オプションを付けるとsw2はtrue (false)"
)
parser.add_argument(
"--sw2", action="store_false", help="switch 2, オプションを付けるとsw2はfalse (true)"
)
parser.add_argument(
"-i",
"--inputs",
action="append",
help='何度も使用できるオプション、例: "-i this -i is -i test"',
)
parser.add_argument(
"-v",
"--version",
action="version",
version=__version__,
help="Show version and exit",
)
args = parser.parse_args() # type: system_loader.SampleArgs
localTimeZone = datetime.datetime.now().astimezone().tzinfo
startDatetime = datetime.datetime.now(localTimeZone)
logger: logging.Logger = None
logger = simple_setup_logger()
# File logger
# os.makedirs('logs', exist_ok=True)
# logger = simple_setup_logger(os.path.join('logs', 'log.log'))
logger.debug(
"\t".join(["Starting", str(__file__), str(__name__), str(__version__)])
)
logger.debug("\t".join(["args", json.dumps(vars(args), ensure_ascii=False)]))
mypath = pathlib.Path("this/is/test/path")
mypath = mypath.joinpath(str(mypath), "sub-dir")
print(str(mypath), File=sys.stderr)
def close(code: int):
processingTime = datetime.datetime.now(localTimeZone) - startDatetime
logger.debug(
"\t".join(
[
"processingTime",
str(processingTime.total_seconds()) + "s",
str(processingTime),
]
)
)
exit(code)
# 終了
close(0)
if __name__ == "__main__":
main()