Python修改DBF文件指定列
一、需求:
某公司每日收到一批DBF文件,A系统实时处理后将其中dealstat字段置为1(已处理)。现在每日晚间B系统也需要处理该文件,因此需将文件中dealstat字段修改为空(未处理)。
二、分析:
1、应创建副本进行修改
解答:使用shutil.copy
2、修改DBF
解答:使用dbf模块。此模块能找到的文档比较旧,需要结合代码进行理解。
三、代码实现:
#!/usr/bin/envpython #_*_coding:utf-8_*_ """ @Time:2020-01-1510:43 @Author:Peanut_C @FileName:DBF_Modifier.py """ importos importtime importshutil importdbf source_dir=r'D:\' destination_dir=r'E:\' """删除目标文件夹内旧文件""" os.chdir(destination_dir) forfileinos.listdir(destination_dir): os.remove(file) print('INFO===>>>历史文件删除完成!\n') """文件拷贝任务""" os.chdir(source_dir) forfileinos.listdir(source_dir): shutil.copy(file,destination_dir) print('INFO===>>>今日文件拷贝完成!\n') """DBF修改任务""" os.chdir(destination_dir) forfileinos.listdir(destination_dir): tb=dbf.Table(file)#创建tb实例 #print(tb)#打印tb信息 titles=dbf.get_fields(file)#将表头以列表形式打印出来 #print(titles) if'dealstat'intitles: flag=0#文件修改标记 tb.open(mode=dbf.READ_WRITE)#读写方式打开tb forrecordintb: withrecordasr: ifr.dealstatisnotNone: #print(r.dealstat) r.dealstat='' flag=1#修改后将标记改为1 #print(r.dealstat) else: continue #print(record.dealstat) tb.close() ifflag==0: print(file+"===>>>没有要修改的数据!\n") else: print(file+"===>>>DealStat字段修改完毕!\n") else: print(file+"===>>>没有DealStat字段!\n") print('INFO===>>>今日文件修改完毕!\n')
四、运行情况:
运行程序,首先清空目标目录,然后创建文件副本,最后依次处理目录中的DBF文件。
虽是个简单的功能,但可节省不少时间,依此类推可对DBF进行其他修改。
希望能帮到有需要的朋友。
多多指教!
以上就是Python修改DBF文件指定列的详细内容,更多关于Python修改DBF文件的资料请关注毛票票其它相关文章!