Python学习笔记五(遍历读取提取写入文件)
#Python打开读取一个文件内容,然后写入一个新的文件中,并对某些字段进行提取,写入新的字段的脚本。这是在工作中,需拼装大量的8543报文,原报文只读,不可写入,且也要对原报文进行提取某字段、新增报文头字段,删除某字段等操作,希望大家有用的着的地方,与大家共同学习进步!
1 import os 2 import re 3 4 def get_filelist(dir): 5 os.getcwd() #get current work direction. 6 os.chdir(path) #change direction 7 Filelist = [] 8 for home, dirs, files in os.walk(path): 9 for filename in files: 10 #文件名列表,包含完整路径 11 #Filelist1.append(os.path.join(home, filename)) 12 #文件名列表,只包含文件名 13 Filelist.append(filename) 14 return Filelist 15 16 def main(): 17 n=0 18 for file in filelist: 19 os.getcwd() #get current work direction. 20 os.chdir(path) #change direction 21 with open(file,mode='r',encoding='utf-8') as f1: 22 data=f1.read() 23 f1.close() 24 25 #切换到新的路径下 26 os.getcwd() #get current work direction. 27 os.chdir(newpath) #change directio 28 29 #读取文件的内容写入到新file文件下 30 with open(file,mode='w',encoding='utf-8') as f2: 31 n=n+1 32 ##提取字段 拼装写入## 33 #系统简称大写 34 SYST=file[file.find("")+0:file.find("")+4].upper() 35 #SYST=SYST.upper() 36 #print(SYST) 37 #发送行号 38 SEND1234SEND="660000000066" 39 #接收行号 40 RECV1234RECV="880000000088" 41 #删除正则匹配的一行 42 data = re.sub(r'<!--.*-->\n', "", data) 43 #报文类型 44 MSGTYPE0MSGTYPE=data[data.find("tech:xsd:")+9:data.find("tech:xsd:")+24] 45 #MsgID 46 MSGRID0000MSGRID=data[data.find("<MsgId>")+7:data.find("<MsgId>")+23] 47 #拼装的报文头 48 head="{H:02"+SEND1234SEND+" "+SYST+RECV1234RECV+" "+SYST+"00000000000001XML"+MSGTYPE0MSGTYPE+" "+MSGRID0000MSGRID+" "+MSGRID0000MSGRID+" 3D }" 49 50 f2.write(head+'\n') 51 f2.write(data) 52 f2.close() 53 54 if os.path.isfile(file): 55 print(file,"转换完成!") 56 else: 57 print(file,"转换失败!") 58 59 print("共转换个文件数:",n) 60 61 62 if __name__ == '__main__': 63 path='E:\\办公文档\\LR项目资料\\XML格式报文示例' 64 newpath='E:\\Python_test\\读取文件\\newfiles' 65 66 #path=input("请输入文件路径:") 67 #newpath=input("请输入转换后新文件路径:") 68 69 filelist = get_filelist(dir) 70 #print(filelist) 71 #不用加引号,如果是多级目录,只判断最后一级目录是否存在 72 if os.path.isdir(newpath): 73 #print ('dir exists') 74 pass 75 else: 76 #print ('dir not exists') 77 os.mkdir(newpath) 78 79 main() 80
可参考:shell读取文件写入新文件
作者:S-Gavin
---------------------------------------
您的支持是我前进的动力!!!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点球球“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行。若要你的心情好,请便右侧赏博主。哈哈哈(っ•̀ω•́)っ✎⁾⁾