使用Python将pandas导出的HTML写入Confluence时内容为None的问题求助
问题根因
代码存在3个核心问题导致拿到的是None值:
- pandas的
DataFrame.to_html()方法如果传入了文件路径作为buf参数,会直接把HTML内容写入目标文件,方法本身返回None,所以赋值的html_file变量本身就是空值。 - 逻辑顺序错误:
return html_file语句写在了打印变量类型、调用Confluence写入方法的前面,return执行后后续代码永远不会运行。 - 低级拼写错误:
export_file函数定义末尾缺少冒号,调用write_data_to_confluence时将参数pageid错写为padeid。
修复方案
你可以选择两种方式拿到可用的HTML内容:
- 直接生成HTML字符串,同时写入本地文件和Confluence,减少IO操作
- 保留原有写文件逻辑,手动读取本地HTML文件的内容
以下是修正后的完整代码:
import os import pandas import pathlib def authenticate(): auth = get_login() return auth def export_file(): auth = authenticate() pageid = 11111111 title = 'GCP Instance List' output_dir = os.path.join("..", "..", "output_files", "gcp_instance_list", "html", "") output_file = os.path.join(output_dir, "gcp-instance-list.html") # 直接生成HTML字符串 html_content = docs.to_html() # 写入本地文件 with open(output_file, 'w', encoding='utf-8') as f: f.write(html_content) path = pathlib.Path(output_file) if path.exists(): print(type(html_content)) # 修正参数拼写错误 write_data_to_confluence(auth, html_content, pageid, title) # 将return放到所有逻辑执行完成后 return html_content else: print("HTML file has not been created.")
如果你更倾向于读取已生成的本地HTML文件,替换生成内容的部分即可:
# 原有写文件逻辑 docs.to_html(output_file) # 读取本地文件内容 with open(output_file, 'r', encoding='utf-8') as f: html_content = f.read()
内容的提问来源于stack exchange,提问作者bluethundr
相关产品推荐
相关产品推荐

