Notepad/enter/Coding Tips (Classical)/Terminal Tips/Languages/Python/tools/IPython/merge multiple notebooks.md

44 lines
1.1 KiB
Markdown
Raw Normal View History

2023-07-05 18:29:11 +00:00
nbmerge.py file
```
#!/usr/bin/env python
# Note, updated version of
# https://github.com/ipython/ipython-in-depth/blob/master/tools/nbmerge.py
"""
usage:
python nbmerge.py A.ipynb B.ipynb C.ipynb > merged.ipynb
"""
import io
import os
import sys
from IPython import nbformat
def merge_notebooks(filenames):
merged = None
for fname in filenames:
with io.open(fname, 'r', encoding='utf-8') as f:
nb = nbformat.read(f, as_version=4)
if merged is None:
merged = nb
else:
# TODO: add an optional marker between joined notebooks
# like an horizontal rule, for example, or some other arbitrary
# (user specified) markdown cell)
merged.cells.extend(nb.cells)
if not hasattr(merged.metadata, 'name'):
merged.metadata.name = ''
merged.metadata.name += "_merged"
print(nbformat.writes(merged))
if __name__ == '__main__':
notebooks = sys.argv[1:]
if not notebooks:
print(__doc__, file=sys.stderr)
sys.exit(1)
merge_notebooks(notebooks)
```