python批量修改word文件名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python批量修改word文件名相关的知识,希望对你有一定的参考价值。

最近不小心把硬盘给格式化了,由于当时的文件没有备份,所以一下所有的文件都没有了,于是只能采取补救措施,用文件恢复软件恢复了一部分的数据出来,但是恢复完毕的文件的文件名全丢了,所有的文件只有代号,如下面的图:

技术分享

几万个文件这要是手动的改得要改到明年。所以便动手写了一个python的脚本程序来代替这种繁杂的操作。

主要想法:想让程序来理解我的word文档里到底是什么内容是不可能的了,但是好在我的word文档内容都有标题,大部分的标题正好就是这个文档的文件名,于是我便打算把文档的标题当作文件名,而文件名大部分都是内容的第一段,于是思路便有了。于是开始写程序开干。

首先需要安装python-docx库,直接通过pip安装:  pip install python-docx

具体的程序如下:

# -*- coding: utf-8 -*-
"""
NameChange1.0

This is a program that automatically modifies
 the name of an word document.
 
 author:fanghao
"""
from docx import Document
import os

#这个是放所有待修改的word文件的目录
dir_1 = "C:\\\\Users\\\\visg\\\\Desktop\\\\4"
filenames = os.listdir(dir_1)

#自动修改
for a in range(len(filenames)):
    print(filenames[a])
    dir_docx = dir_1 +"\\\\"+ filenames[a]
    try:
        document = Document(dir_docx)
    except:
        print("error")
    else:
        new_name = document.paragraphs[0].text + ‘.docx‘
        try:
            os.rename(dir_1 + os.sep + filenames[a],dir_1 + os.sep + new_name)
        except(FileNotFoundError,FileExistsError,OSError):
            print("FileNotFoundError")

 具体的目录自己修改下就可以了,这里我直接跳过了哪些名字改后重复的文件。

但是有点坑的地方是恢复出来的文档有的是docx,有的是doc文档,docx文档可以通过以上的方法来改名,但是doc文档便出现了问题。于是便只能先把doc文档转成docx文档,然后再用上述的方法来修改。怎么把doc转成docx,这里有一篇博客,一个大牛写了个比较利好的插件可以很好的实现(http://blog.sina.com.cn/s/blog_5488e3a90100u8ux.html),亲测好用!

注意:上述的方法对于大部分的word文档是可以的,但是有些文档由于格式等自身原因,无法进行修改,对于这些文档可以直接手动修改。

 

以上是关于python批量修改word文件名的主要内容,如果未能解决你的问题,请参考以下文章

Python自动化办公批量将文字写入Word文件中的具体操作

Python自动化办公批量将文字写入Word文件中的具体操作

Python自动化批量word转换pdf

如何同时批量修改多个word文档内容

利用python处理自动化任务之同时批量修改word里面的内容

Python 自动化:根据模板批量生成含指定数据的 word 文档