👉 ✈手机屏幕横着看更精彩 *_*. . . . . . 大 江 东 去,浪 淘 尽, 千 古 风 流 人 物。 故 垒 西 边, 人 道 是, 三 国 周 郎 赤 壁。 乱 石 穿 空, 惊 涛 拍 岸, 卷 起 千 堆 雪。 江 山 如 画, 一 时 多 少 豪 杰。 遥 想 公 瑾 当 年, 小 乔 初 嫁 了, 雄 姿 英 发。 羽 扇 纶 巾, 谈 笑 间, 樯 橹 灰 飞 烟 灭。 故 国 神 游, 多 情 应 笑 我, 早 生 华 发。 人 生 如 梦, 一 尊 还 酹 江 月。 (。_°)☆\(- – ) 👈

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

 

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

posted @ 2019-10-21 11:03  S-Gavin  阅读(1301)  评论(0编辑  收藏  举报