目录
起因
运用模块
思路
1、修改文件外部名称
2、修改文件内部名称
3、将文档分类
代码实现
运行效果
起因
女朋友叫我帮他抄作业,也就是把别人的名字改成她的名字,然后把各个科室的文档放在一个文件夹。
程序猿怎么能干重复的工作呢?于是想到了用python。写了一个批量改名和分类的小脚本。
- python-docx : 对文档 *** 作的模块
- shutil : 针对文件的拷贝、删除、移动、压缩和解压 *** 作
- os
用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, "小白", "小红")
运行效果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)