如何在AWS SageMaker中将Jupyter Notebook导出为HTML并存入S3
使用
nbconvert.HTMLExporter实现Jupyter Notebook转HTML 前置准备
确保已安装nbconvert,未安装的话执行:
pip install nbconvert
代码实现示例
下面是完整的实现逻辑,包含Notebook转HTML、以及将生成的HTML上传到AWS S3的步骤(和你现有的图片上传逻辑兼容):
from nbconvert import HTMLExporter import nbformat import boto3 from six.moves.urllib.parse import urlparse import os # 自动获取当前Notebook文件名(适配VS Code环境,Jupyter环境可替换为globals()['__file__']) notebook_filename = os.path.basename(globals()['__vsc_ipynb_file__']) # 加载Notebook内容 with open(notebook_filename, "r", encoding="utf-8") as f: nb = nbformat.read(f, as_version=4) # 初始化HTML导出器,可选择不同模板样式 html_exporter = HTMLExporter(template_name="classic") # 可选值:'lab'/'basic'等 # 执行转换,获取HTML内容和关联资源 html_content, resources = html_exporter.from_notebook_node(nb) # 保存HTML到本地文件 html_file = "australia_covid_analysis_report.html" with open(html_file, "w", encoding="utf-8") as f: f.write(html_content) # 上传HTML到AWS S3,复用现有S3操作逻辑 s3_uri = 's3://ca-experiment/output/reports/' parsed_url = urlparse(s3_uri) bucket_name = parsed_url.netloc s3_key = f"{parsed_url.path.lstrip('/')}{html_file}" with open(html_file, 'rb') as f: s3 = boto3.resource('s3') s3.Bucket(bucket_name).put_object( Key=s3_key, Body=f, ContentType='text/html' )
关键细节
- 不同环境下获取当前Notebook文件名的方式:
- Jupyter Notebook/Lab:可手动指定文件名,或通过内核变量获取
- VS Code:使用
globals()['__vsc_ipynb_file__']
- 模板参数
template_name说明:classic:匹配传统Jupyter Notebook界面风格lab:适配Jupyter Lab的界面样式basic:生成无额外样式的极简HTML
- 转换后的HTML会自动包含Notebook中所有代码块、输出结果(包括你生成的COVID病例图表),无需额外处理图片引用
命令行快捷转换方式
如果不需要在代码中集成转换逻辑,直接用命令行即可快速完成:
jupyter nbconvert --to html your_notebook_name.ipynb
内容的提问来源于stack exchange,提问作者Sophia
相关产品推荐
相关产品推荐

