#Python打开读取一个文件内容,然后写入一个新的文件中,并对某些字段进行提取,写入新的字段的脚本,与大家共同学习。

 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+"000000000001XML"+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

 

版权声明:本文为zwh-Seeking原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zwh-Seeking/p/11712229.html