zoukankan      html  css  js  c++  java
  • 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文档是可以的,但是有些文档由于格式等自身原因,无法进行修改,对于这些文档可以直接手动修改。

  • 相关阅读:
    WPF 打开文件 打开路径对话框
    WPF Button添加图片
    Delphi 正则表达式PerlRegEx
    解决Inet控件下载utf8网页乱码的问题
    Delphi程序结构
    VB 936(gb2312)URL编码与解码
    Chr 将一个有序数据转换为一个ANSI字符
    Delphi正则表达式使用方法(TPerlRegEx)
    Delphi类型转换
    Delphi 正则表达式TPerlRegEx 类的属性与方法
  • 原文地址:https://www.cnblogs.com/zutterhao/p/7678523.html
Copyright © 2011-2022 走看看