批量重命名word文档的python程序

这是一个使用Python和win32com库批量重命名Word文档的程序,根据文档内指定段落内容作为新文件名。程序处理.docx和.doc格式,有重复文件名检测机制,但存在无法处理文件名含空格的bug。
摘要由CSDN通过智能技术生成

最近写了一个批量重命名word文档的python程序,能够将指定文件夹下的全部word文档重命名,命名规则是提取文档内的文字作为新的文件名,具体代码如下:

import os
import win32com.client as win32

fileName = []
m=0

folder_path = input("请输入要读取的文件夹路径(格式:F:/文件夹名字/):")
new_folder_path = input("请输入要保存的文件夹路径(格式:F:/文件夹名字/):")
hang = input("请输入要读取第几行来命名文档:")

# 循环遍历文件夹中的所有docx文件
for filename in os.listdir(folder_path):
    m=m+1
    if filename.endswith('.docx'):
        # 使用win32com对象读取word文档,提取文档第一行并作为新文档名
        word = win32.Dispatch('Word.Application')
        doc = word.Documents.Open(os.path.join(folder_path, filename))
        new_filename = doc.Paragraphs(hang).Range.Text.strip() + '.docx'

        for i in fileName:
            if i==new_filename:
                new_filename=doc.Paragraphs(hang).Range.Text.strip() + '1'*m + '.docx'
        fileName.append(new_filename)
        doc.Close()

        # 另存为新文档
        new_doc_path = os.path.join(new_folder_path, new_filename)
        old_doc_path = os.path.join(folder_path, filename)
        os.rename(old_doc_path, new_doc_path)


for filename in os.listdir(folder_path):
    m=m+1
    if filename.endswith('.doc'):
        # 使用win32com对象读取word文档,提取文档第一行并作为新文档名
        word = win32.Dispatch('Word.Application')
        doc = word.Documents.Open(os.path.join(folder_path, filename))
        new_filename = doc.Paragraphs(hang).Range.Text.strip() + '.doc'

        for i in fileName:
            if i==new_filename:
                new_filename=doc.Paragraphs(hang).Range.Text.strip() + '1'*m + '.doc'
        fileName.append(new_filename)
        doc.Close()

        # 另存为新文档
        new_doc_path = os.path.join(new_folder_path, new_filename)
        old_doc_path = os.path.join(folder_path, filename)
        os.rename(old_doc_path, new_doc_path)
 

原本的想法是想要提取word文档的指定行作为新文件名的,后来发现只能定向提取段落,就只能以对应段落来命名了。通常可以选择第一段也就是文章标题作为文件名字,倒是也不影响使用。

程序中加入了重复命名检测机制,防止遇到两个文档名字相同的情况。主程序执行了两遍,可以把docx和doc文档都给重命名

目前发现一个bug就是遇到word文档名中包含空格时会报错,排除了好久也没搞定,所以在使用该代码时需要提前把文档名包含空格的提前剔除

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值