#!/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')