import argparse
import glob
import os
import re
import shutil
from datetime import datetime
def parse_args():
parser = argparse.ArgumentParser(
description='Reorganize reservoir storage data by year and reservoir.')
parser.add_argument(
'dest', type=str, help='New directory location for files.')
parser.add_argument(
'files', nargs='+', type=str, help='Files to copy or move.')
parser.add_argument(
'-m', '--move', action='store_true',
help='Move files instead of copying.')
parser.add_argument(
'-s', '--show', action='store_true',
help='Print new directory structure when done.')
return parser.parse_args()
> python data_reorg.py --help
usage: data_reorg.py [-h] [-m] [-s] dest files [files ...]
Reorganize reservoir storage data by year and reservoir.
positional arguments:
dest New directory location for files.
files Files to copy or move.
optional arguments:
-h, --help show this help message and exit
-m, --move Move files instead of copying.
-s, --show Print new directory structure when done.
if os.path.exists(dest):
if not os.path.isdir(dest):
raise RuntimeError(
'Something already exists with the same name '
'as destination directory!')
else:
os.makedirs(dest)
os.path.exists('data')
True
if move:
func = shutil.move
else:
func = shutil.copy
final_dest = os.path.join(dest, reservoir)
os.path.join('data', 'NICASIO', '2012')
'data/NICASIO/2012'
files = glob.glob(os.path.join(dest, '**', '*.txt'))
glob.glob('data/n*.txt')
['data/n10.txt', 'data/n11.txt', 'data/n12.txt', 'data/n13.txt', 'data/n14.txt', 'data/n6.txt', 'data/n7.txt', 'data/n8.txt', 'data/n9.txt']
# get just the reservoir name from e.g. '#NICASIO'
reservoir = re.search(r'#\s*(.*)', line).group(1)
re.search(r'#\s*(.*)', '# NICASIO').group(1)
'NICASIO'
reservoir = reservoir.replace(' ', '')
'San Pablo Reservoir'.replace(' ', '')
'SanPabloReservoir'
'San Pablo Reservoir'.replace(' ', '').lower()
'sanpabloreservoir'
'{}_{}.txt'.format(reservoir, year)
reservoir = 'SanPabloReservoir'
year = 2014
'{}_{}.txt'.format(reservoir, year)
'SanPabloReservoir_2014.txt'
date = datetime.strptime(date, '%m/%Y')
date = datetime.strptime('10/9/2014', '%d/%m/%Y')
print(date)
print(date.year)
2014-09-10 00:00:00 2014