-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpyt_MSC01_sort_megacam_files.py
60 lines (47 loc) · 2.17 KB
/
pyt_MSC01_sort_megacam_files.py
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
import sys
import datetime
import glob, os, bz2, subprocess
import os.path
from astropy.io import fits
from astropy.io.fits import getheader
import smtplib, ssl
import macadamia_functions as mcd
def extract_date_megacam(fits_filename,keep_going):
date_obs = ''
hdulist = fits.open(fits_filename)
hdr = hdulist[0].header
date_obs = hdr['DATE-OBS']
return date_obs,keep_going
def main():
# Define filenames and paths
if len(sys.argv)!=2:
print('Usage:\n python3 pyt_MSC01_sort_megacam_files.py [base_path]\n')
base_path = sys.argv[1]
keep_going = True
# Validate input parameters
if not os.path.isdir(base_path):
print('Directory {:s} not found.'.format(base_path))
keep_going = False
if keep_going:
mcd.send_status_email('MSC01_sort_megacam_files execution started','MSC01_sort_megacam_files execution started.')
# Create and initialize log file
path_logfile,path_errorfile = mcd.initialize_log_error_file(base_path,'MSC01_sort_megacam_files')
mcd.create_directory(base_path+'incomplete_files/',path_logfile,path_errorfile)
os.chdir(base_path)
for fits_filename in sorted(glob.glob('*.fits.fz')):
date_obs = ''
try:
date_obs,keep_going = extract_date_megacam(fits_filename,keep_going)
except:
os.rename(fits_filename,base_path+'incomplete_files/'+fits_filename)
if len(date_obs) == 10 and date_obs[4] == '-' and date_obs[7] == '-':
dir_name = 'ut{:s}{:s}{:s}/'.format(date_obs[0:4],date_obs[5:7],date_obs[8:10])
mcd.create_directory(base_path+dir_name,path_logfile,path_errorfile)
mcd.output_log_entry(path_logfile,'Moving {:s} to {:s}...'.format(fits_filename,dir_name))
os.rename(fits_filename,base_path+dir_name+fits_filename)
mcd.send_status_email('MSC01_sort_megacam_files execution complete','MSC01_sort_megacam_files execution complete.')
mcd.remove_error_log_if_empty(path_logfile,path_errorfile)
mcd.output_log_entry(path_logfile,'Done.')
return None
if __name__ == '__main__':
main()