-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcopynb.py
45 lines (41 loc) · 1.44 KB
/
copynb.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
import io
import argparse
from datetime import datetime
import nbformat
from nbconvert.preprocessors import ExecutePreprocessor
# Permite modificar solo nb_base y replicar cambios en nbs
nb_base = 'ValoresCuotaCuprum.ipynb'
afps = ['Provida', 'Capital', 'Modelo', 'Planvital', 'Habitat']
nbs = ['ValoresCuota%s.ipynb'%s for s in afps]
# Funcion procesa nb
def nbexec(nb_base, nb):
base_name = nb_base.split('Cuota')[1].split('.')[0].upper()
afp_name = nb.split('Cuota')[1].split('.')[0].upper()
# Lee nb_base origen
with io.open(nb_base, 'rt') as f:
aux = nbformat.read(f, as_version=4)
# Reemplaza afp_name
u = aux['cells'][1]['source'].replace(base_name, afp_name)
aux['cells'][1]['source'] = u
# Opciones
ep = ExecutePreprocessor(timeout=300)
# Procesa aux (Revisar si preprocess modifica aux)
ep.preprocess(aux, {})
# Escribe nb destino
with io.open(nb, 'wt') as f:
nbformat.write(aux, f)
print "[INFO]--" + datetime.now().strftime('%Y-%M-%d %H:%M:%S') + "--" + "nbexec" + "--" + nb
def processall():
# Procesa nb base
nbexec(nb_base, nb_base)
# Procesa lista nbs
for nb in nbs:
nbexec(nb_base, nb)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="Copy changes from ValoresCuotaCuprum.ipynb")
parser.add_argument('nb', nargs='?')
args = parser.parse_args()
if args.nb:
nbexec(nb_base, args.nb)
else:
processall()