首页 > 编程语言 > 详细

Python学习笔记五(读取提取写入文件)

时间:2019-10-21 12:25:04      阅读:116      评论:0      收藏:0      [点我收藏+]

#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     
View Code

 

 可参考:shell读取文件写入新文件

Python学习笔记五(读取提取写入文件)

原文:https://www.cnblogs.com/zwh-Seeking/p/11712229.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!