欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

arcgis批量处理nc文件_文件批量处理

程序员文章站 2022-04-17 16:02:24
...
  1. 批量重命名文件
    在这里最核心的就是os.listdir(),这个函数可以返回文件夹里所有文件的文件名. 有了这个我们才能进行其他操作,包括遍历。
import sys
import os                                 #OS库是文件处理中经常用到的库
import comtypes.client
#单个word转PDF
wdFormatPDF = 17
addr = 'C:UserswangDesktopG13-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:UserswangDesktopDCC_file.xlsx')

arcgis批量处理nc文件_文件批量处理
通过读取register发现我们需要根据“DCC”列进行分类,而对应的文件名在“NATIVE”列

接下来,需要完成的就是:(1) 获取每一类DCC编码下的文件名;(2)复制对应文件名至相应文件夹。

其中文档的复制移动主要依靠shutil模块.

import os
import shutil 

file_dir = r'C:UserswangDesktopAll 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:UserswangDesktopdoc10-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.