- 批量重命名文件
在这里最核心的就是os.listdir(),这个函数可以返回文件夹里所有文件的文件名. 有了这个我们才能进行其他操作,包括遍历。
import sys import os #OS库是文件处理中经常用到的库 import comtypes.client #单个word转PDF wdFormatPDF = 17 addr = 'C:\\Users\\wang\\Desktop\\G13-a\\' #文件夹的绝对路径 names = os.listdir(addr) # 读取文件夹下的所有文件名 #进行遍历 for name in names: old_name = addr + name #注意rename函数里要放完整的路径,不能只放新旧名字 new_name = addr + name[:13] #这是当时甲方要求去除后缀,故只取旧题目的前13位 os.rename (old_name, new_name)
2. 文件分类
在tender的最后提交时,甲方要求按工作编号进行提交,这里需要按照register里的编号进行分类。
首先读取文档,观察数据形式
import pandas as pd df = pd.read_excel('C:\\Users\\wang\\Desktop\\DCC_file.xlsx')
接下来,需要完成的就是:(1) 获取每一类DCC编码下的文件名;(2)复制对应文件名至相应文件夹。
其中文档的复制移动主要依靠shutil模块.
import os import shutil file_dir = r'C:\Users\wang\Desktop\All file' #这里是存放所有文件的位置,它们需要进行分类 os.chdir(file_dir) numb = '10-01902-0002-050' #这是其中一个DCC 编码 os.mkdir(numb) #在当前路径下创建对应的文件夹 filenames = df.loc[(df['DCC']== numb)]['NATIVE'] #利用loc函数筛选出 '10-01902-0002-050' 对应的所有文件名 # 这里操作是因为DC部门在命名文件时,Pdf, Word 和drawing的文件名后三位分别是“P00”,“W00”和“V00”, # 所以通过这个,为对应的文件名加上对应的后缀,来构成完整的文件名 for name in filenames: if name[-3] == 'X': fname = name + '.xls' if name[-3] == 'V': fname = name + '.dgn' if name[-3] == 'W': fname = name + '.doc' if os.path.exists(fname) ==1: #判断文件是否存在 shutil.copy(fname,numb) #复制文件至文件夹 else: print(fname) #输出不存在的文件名,用来检查
3. 批量Word转PDF
这个很常见的需求,需要将word转为PDF,但传统的Adobe转PDF需要一个一个点,比较慢,而网上大部分批量转PDF的软件基本收费,所以也是临时想起用python写个小程序。
这里呢,如前面提到的DC要求,转换得到的PDF,名字后三位需要时“P00″, 例如C860040001W00.doc 转换后的PDF应该是 C860040001W00.pdf.
所以这里目标有两个:
(1) 遍历,也就是达到批量处理的目的
(2) 重命名后三位为”P00″
这里用到的库是 comtypes.client,用它访问COM组件达到转PDF的目的。
import sys import os import comtypes.client wdFormatPDF = 17 addr = 'C:\\Users\\wang\\Desktop\\doc\\10-01902-0002-711\\' # 目标路径,存放word的位置 doc_names = os.listdir(addr) #读取文件夹里所有文件的名字 pdf_names = [] #将用来存放转换后PDF的名字 #开始遍历 for name in doc_names: pdf_name = name[:10] +'P00.pdf' #实现文件名转换:C860040001W00.doc 到 C860040001W00.pdf. pdf_names.append(pdf_name) #存放新的PDF文档文件名 in_file = os.path.abspath(addr + name) #构造完整路径的文件名 out_file = os.path.abspath(addr + pdf_name) word = comtypes.client.CreateObject('Word.Application') doc = word.Documents.Open(in_file) doc.SaveAs(out_file, FileFormat=wdFormatPDF) #转换为PDF doc.Close() word.Quit()
有了这些小程序,基本可以处理工作中的文档操作了!感谢Python让我现在有时间喝咖啡写文章,而不用继续click,click,click.