#!/usr/bin/env python
# Wenchang Yang (wenchang@princeton.edu)
# Tue Oct 15 16:29:10 EDT 2019
from datetime import datetime
import os.path, sys, os
import glob
#import xarray as xr, numpy as np, pandas as pd
#import matplotlib.pyplot as plt
html_file = 'index.html'
img_width = 800
def get_file_size(ifile):
s = os.path.getsize(ifile) # an integer
if s<1e3:
return f'{s}B'
elif s<1e6:
return f'{s/1e3:.1f}K'
elif s<1e9:
return f'{s/1e6:.1f}M'
else:
return f'{s/1e9:.1f}G'
def write_list_of_files_to_html(fobj_html, extension, label):
#extension = '.nc'
#label = 'NC Files'
ifiles = glob.glob(f'*{extension}')
if ifiles:
s = f'
{label}
\n'
fobj_html.write(s)
ifiles.sort(key=lambda x: x[:x.index(extension)])# take extension out before sorting
for ifile in ifiles:
if ifile.endswith('.nc'): # get the file size information if ifile is netcdf file
ifile_size = get_file_size(ifile)
s = f'{ifile}: {ifile_size}\n'
elif ifile.endswith('.pdf'):
s = f'{ifile}
\n'
else:
s = f'{ifile}\n'
fobj_html.write(s)
fobj_html.write('\n')
else:
print('[not found]:', label)
if __name__ == '__main__':
tformat = '%Y-%m-%d %H:%M:%S'
t0 = datetime.now()
print('[start]:', t0.strftime(tformat))
with open(html_file, 'w') as f:
# html style of fonts
s = '\n'
f.write(s)
f.write('\n')
# title section
proj_name = os.path.abspath(__file__).split('/')[-2] # name of the parent dir
s = f'{proj_name}
\n'
f.write(s)
f.write('Wenchang Yang\n')
f.write('Department of Geosciences, Princeton University\n')
s = f'{t0.strftime(tformat)}\n'
f.write(s)
f.write('\n')
# List of all files
ifiles = glob.glob('*')
ifiles.sort(key=lambda x: '.'.join(x.split('.')[:-1]) if '.' in x else x)# sort by file names without the extension
if ifiles:
f.write('List of All Files
\n')
idirs = [ifile + '/' for ifile in ifiles if os.path.isdir(ifile)] # dirs
ifiles = [ifile for ifile in ifiles if not os.path.isdir(ifile)] # pure files
for ifile in idirs:
s = f'{ifile}\n'
f.write(s)
for ifile in ifiles:
if ifile.endswith('.nc'):
ifile_size = get_file_size(ifile)
s = f'{ifile}: {ifile_size}\n'
else:
s = f'{ifile}\n'
f.write(s)
f.write('\n')
# figures
label = 'Figures'
ifiles = glob.glob('*.png')
if ifiles:
s = f'{label}
\n'
f.write(s)
ifiles.sort(key=lambda x: x[:x.index('.png')])# take extension out before sorting
for ifile in ifiles:
s = f'{ifile}

\n'
f.write(s)
f.write('\n')
else:
print('[not found]:', label)
# pdf files
write_list_of_files_to_html(fobj_html=f, extension='.pdf', label='PDFs')
# jupyter notebooks
label = 'Notebooks'
ifiles = glob.glob('*.ipynb')
if ifiles:
s = f'{label}
\n'
f.write(s)
ifiles.sort(key=lambda x: x[:x.index('.ipynb')])# take extentsion out before sorting
for ifile in ifiles:
s = f'{ifile}\n'
f.write(s)
f.write('\n')
else:
print('[not found]:', label)
# python scripts
write_list_of_files_to_html(fobj_html=f, extension='.py', label='Python Scripts')
# shell scripts
write_list_of_files_to_html(fobj_html=f, extension='.sh', label='Shell Scripts')
# netcdf file
write_list_of_files_to_html(fobj_html=f, extension='.nc', label='NC Files')
t1 = datetime.now()
print('[end]:', t1.strftime(tformat))
print('[total time]:', f'{(t1-t0).seconds:,} seconds')