zoukankan      html  css  js  c++  java
  • 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'<!--.*-->
    ', "", 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+'
    ')
    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读取文件写入新文件

  • 相关阅读:
    git线上操作
    IDEA快捷方式
    Java 四种线程池
    java 获取当前天之后或之前7天日期
    如何理解AWS 网络,如何创建一个多层安全网络架构
    申请 Let's Encrypt 通配符 HTTPS 证书
    GCE 部署 ELK 7.1可视化分析 nginx
    使用 bash 脚本把 AWS EC2 数据备份到 S3
    使用 bash 脚本把 GCE 的数据备份到 GCS
    nginx 配置 https 并强制跳转(lnmp一键安装包)
  • 原文地址:https://www.cnblogs.com/zwh-Seeking/p/11712229.html
Copyright © 2011-2022 走看看