1. 程式人生 > 其它 >arcgis批量處理nc檔案_檔案批量處理

arcgis批量處理nc檔案_檔案批量處理

技術標籤:arcgis批量處理nc檔案

  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')

9413be852152ffba6e5bfa34e10d4bce.png
通過讀取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.