You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求助:如何将Python脚本的完整输出保存至DOC文件?

解决Python脚本输出无法完整保存到DOC文件的问题

嘿,我来帮你搞定这个问题!先拆解下你遇到的核心问题和代码里的小坑,再给你两种可行的解决方案:

首先说下你原代码里的两个小问题:

  • 你的underline函数是直接打印带下划线的文本,而且默认返回None,所以调用print(underline(item))时,会先打印带下划线的单词,接着又打印None,输出里多了不必要的内容;
  • 如果你之前是在循环里逐个写入文件,且用的是open('file.doc', 'w')模式,那w会每次清空文件再写入,最后自然只剩最后一行内容。

另外要注意:DOC是Word的二进制格式,直接往里面写终端用的ANSI下划线转义符,Word根本识别不了,所以咱们分两种场景来实现需求:

方案1:保存为可被Word打开的纯文本文件

先修正代码,把所有输出内容收集起来,再一次性写入文件,避免覆盖问题:

h = 'Hello everyone Im new to this world'

# 修改函数,返回格式化后的字符串(终端转义符在Word里没用,改用下划线包围标识)
def underline(x):
    return f'__{x}__'

# 收集所有输出内容
output_content = []
for item in h.split():
    if len(item) >= 5:
        formatted_item = underline(item)
        output_content.append(formatted_item)
        print(formatted_item)
    else:
        output_content.append(item)
        print(item)

# 一次性写入文件,保证内容完整
with open('output.txt', 'w', encoding='utf-8') as f:
    # 用空格拼接单词,和原输出格式一致
    f.write(' '.join(output_content))

生成的output.txt可以直接用Word打开,长单词会被__清晰标识出来。

方案2:生成带真实下划线的标准DOC文档(推荐)

如果想要真正的Word格式文档,且长单词带有Word原生下划线,需要用到python-docx库,步骤如下:

  1. 先安装依赖库:
pip install python-docx
  1. 编写生成DOC的代码:
from docx import Document
from docx.enum.text import WD_UNDERLINE

h = 'Hello everyone Im new to this world'

# 创建新的Word文档对象
doc = Document()
# 添加一个段落用来存放内容
paragraph = doc.add_paragraph()

for item in h.split():
    # 把每个单词添加到段落,后面加空格分隔
    run = paragraph.add_run(f'{item} ')
    # 对长单词设置单下划线
    if len(item) >= 5:
        run.underline = WD_UNDERLINE.SINGLE

# 保存最终的DOC文档
doc.save('output.docx')

这样生成的output.docx里,长单词会带有Word标准的下划线,完全符合你的需求。

补充:为什么之前只保存最后一行?

大概率是你之前的写入逻辑是循环里每次用w模式打开文件,比如:

# 错误示例:每次循环都会清空文件
for item in ...:
    with open('output.doc', 'w') as f:
        f.write(item)

w模式会在每次打开时清空文件内容,所以最后只有最后一次写入的内容。正确的做法是一次性收集所有内容再写入,或者用a模式追加,但前者更高效也更稳妥。

内容的提问来源于stack exchange,提问作者pavitra

火山引擎 最新活动