基于python实现文档名字修改、文档内容修改、文档分类存放

目录

起因

运用模块

思路

1、修改文件外部名称

2、修改文件内部名称

3、将文档分类

代码实现

运行效果​


起因

女朋友叫我帮他抄作业,也就是把别人的名字改成她的名字,然后把各个科室的文档放在一个文件夹。
程序猿怎么能干重复的工作呢?于是想到了用python。写了一个批量改名和分类的小脚本。

运用模块

  1. python-docx : 对文档操作的模块
  2. shutil : 针对文件的拷贝、删除、移动、压缩和解压操作
  3. os

思路

1、修改文件外部名称

 

用os.rename修改文件名称

os.rename("/Users/Aaron/Desktop/文档/小红.docx","/Users/Aaron/Desktop/文档/小白.docx")

2、修改文件内部名称

用python-docx的 doc = Document(file_path) 获取文档

doc.paragraphs获取文章段落,对文章段落文字进行匹配,如果文章段落中存在“小红” 把他替换成 “小白”

    doc = Document("/Users/Aaron/Desktop/文档/1.docx")
    for paragraph in doc.paragraphs:
        if "小红" in paragraph.text:
            paragraph.text = paragraph.text.replace("小红", "小白")
    doc.save("/Users/Aaron/Desktop/文档/1.docx")

3、将文档分类

使用shutil.copy 将旧路径复制到新路径

shutil.copy(old_path, new_path)

代码实现

import os
from docx import Document
import shutil


def replace_and_move(path, old_name, new_name):
    # 获取目录所有文件
    fileList = os.listdir(path)
    count = 0
    for i in fileList:
        # 替换文件名称
        new_dir = replace_document_name(path, fileList[count], old_name, new_name)
        # 替换里面内容
        replace_document_content(new_dir, old_name, new_name)
        # 将文件分类放置
        copy_to_new_dir(new_dir, fileList[count].replace(old_name, new_name))
        count += 1


# 将文件分类,定义key_world 如果文件存在此key_world那么进行分类
def copy_to_new_dir(old_path,file_name):
    original_path = "/Users/Aaron/Desktop"
    key_worlds = ["儿科", "传染病", "妇产科"]
    for key_world in key_worlds:
        if key_world in old_path:
            new_path = original_path + "/" + key_world + "/" + file_name
            print("移动文件", file_name, "===========>", new_path)
            shutil.copy(old_path, new_path)


# 修改文件外部名称
def replace_document_name(path, file, old_name, new_name):
    new_name_in_file = file.replace(old_name, new_name)
    old_dir = path + os.sep + file
    new_dir = path + os.sep + new_name_in_file
    os.rename(old_dir, new_dir)
    return new_dir


# 修改文件内部名称
def replace_document_content(file_path, old_name, new_name):
    print(file_path)
    is_doc_document = "docx" in file_path
    if not is_doc_document:
        print(file_path, "不是docx文档")
        return
    doc = Document(file_path)
    for paragraph in doc.paragraphs:
        if old_name in paragraph.text:
            paragraph.text = paragraph.text.replace(old_name, new_name)
    doc.save(file_path)


path1 = "/Users/Aaron/Desktop/文件目录"
replace_and_move(path1, "小白", "小红")

运行效果

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值