一、需求:
某公司每日收到一批dbf檔案,a系統實時處理後將其中dealstat欄位置為1(已處理)。現在每日晚間b系統也需要處理該檔案,因此需將檔案中dealstat欄位修改為空(未處理)。
二、分析:
1、應建立副本進行修改
解答:使用shutil.copy
2、修改dbf
解答:使用dbf模組。此模組能找到的文件比較舊,需要結合**進行理解。
三、**實現:
1#!/usr/bin/env python2#
_*_ coding:utf-8 _*_34
5"""
6@time : 2020-01-15 10:43
7@author : peanut_c
8@filename: dbf_modifier.py
9"""
1011
import
os12
import
time
13import
shutil
14import
dbf15
1617 source_dir = r'
d:\'
18 destination_dir = r'
e:\'
1920
"""刪除目標資料夾內舊檔案
"""21
os.chdir(destination_dir)
22for file in
os.listdir(destination_dir):
23os.remove(file)
24print('
info ===>>> 歷史檔案刪除完成!\n')
2526
"""檔案拷貝任務
"""27
os.chdir(source_dir)
28for file in
os.listdir(source_dir):
29shutil.copy(file, destination_dir)
30print('
info ===>>> 今日檔案拷貝完成!\n')
3132
"""dbf修改任務
"""33
os.chdir(destination_dir)
34for file in
os.listdir(destination_dir):
35 tb = dbf.table(file) #
建立tb例項36#
print(tb) # 列印tb資訊
37 titles = dbf.get_fields(file) #
將表頭以列表形式列印出來38#
print(titles)
39if
'dealstat'in
titles:
40 flag = 0 #
檔案修改標記
41 tb.open(mode=dbf.read_write) #
讀寫方式開啟tb
42for record in
tb:43
with record as r:
44if r.dealstat is
notnone:45#
print(r.dealstat)
46 r.dealstat = ''
47 flag = 1 #
修改後將標記改為148#
print(r.dealstat)
49else:50
continue51#
print(record.dealstat)
52tb.close()
53if flag ==0:
54print(file + "
===>>>沒有要修改的資料!\n")
55else:56
print(file + "
===>>>dealstat欄位修改完畢!\n")
57else:58
print(file + "
===>>>沒有dealstat欄位!\n")
5960
print('
info ===>>> 今日檔案修改完畢!\n
')
四、運**況:
執行程式,首先清空目標目錄,然後建立檔案副本,最後依次處理目錄中的dbf檔案。
雖是個簡單的功能,但可節省不少時間,依此類推可對dbf進行其他修改。
希望能幫到有需要的朋友。
多多指教!
匯出dbf 檔案
匯出dbf 檔案 jsp頁面 請選擇變動原因 儲存 dbf資料匯出 js exportdbfbd click function success function filedownloadpath top.messager.alert 系統提示 匯出成功!info filedownloadpath 房...
DBF檔案格式
在一次匯出為dbf格式的編碼過程中,發現匯出的中文標題都是5個字,故特意研究一下dbf檔案的格式,看來還真是,欄位名稱最多支援5個漢字,再多了dbf就不管了,因為dbf格式的檔案只為欄位名留了11個位元組。1.總的檔案格式 檔案頭記錄1 記錄2 記錄n 2.檔案頭格式 在檔案中的位置 內容 說明0 ...
python 複製 移動檔案到指定目錄並修改名字
基本思路 1 確定指定目錄 2 判斷指定目錄是否存在,如果不存在就新建該目錄 3 修改新的檔名 4 複製到指定位置,如果需要移動採用 shutil.move origin path,new file name import os import shutil base dir os.path.dirn...