arcgis批量處理nc檔案_檔案批量處理
阿新 • • 發佈:2021-01-10
技術標籤:arcgis批量處理nc檔案
- 批量重新命名檔案
在這裡最核心的就是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')
接下來,需要完成的就是:(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.