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
|
#!/usr/bin/env python3
#
# Copyright (c) 2017 Weitian LI <liweitianux@live.com>
# MIT license
#
# Weitian LI
# 2017-02-06
"""
Extract the object name and observation ID from the directory path.
The root directory of the object data has the format:
<name>_oi<obsid>
"""
import os
import argparse
import re
RE_DATA_DIR = re.compile(r"^.*/(?P<name>[^/_]+)_oi(?P<obsid>\d+).*$")
def get_name(path):
"""
Extract the object name from the directory path.
Parameters
----------
path : str
Path to the data directory
Returns
-------
objname : str
The name part of the data directory
"""
return RE_DATA_DIR.match(path).group("name")
def get_obsid(path):
"""
Extract the observation ID from the directory path.
Parameters
----------
path : str
Path to the data directory
Returns
-------
obsid : int
The observation ID of the data
"""
return int(RE_DATA_DIR.match(path).group("obsid"))
def main():
parser = argparse.ArgumentParser(
description="Extract object name and ObsID from data directory")
parser.add_argument("-b", "--brief", dest="brief",
action="store_true", help="Be brief")
parser.add_argument("-n", "--name", dest="name",
action="store_true", help="Only get object name")
parser.add_argument("-i", "--obsid", dest="obsid",
action="store_true", help="Only get observation ID")
parser.add_argument("path", nargs="?", default=os.getcwd(),
help="Path to the data directory " +
"(default: current working directory)")
args = parser.parse_args()
path = os.path.abspath(args.path)
b_get_name = False if args.obsid else True
b_get_obsid = False if args.name else True
if b_get_name:
if not args.brief:
print("Name:", end=" ")
print(get_name(path))
if b_get_obsid:
if not args.brief:
print("ObsID:", end=" ")
print(get_obsid(path))
if __name__ == "__main__":
main()
|