#Python打开读取一个文件内容,然后写入一个新的文件中,并对某些字段进行提取,写入新的字段的脚本。这是在工作中,需拼装大量的8543报文,原报文只读,不可写入,且也要对原报文进行提取某字段、新增报文头字段,删除某字段等操作,希望大家有用的着的地方,与大家共同学习进步!

 import os
import re def get_filelist(dir):
os.getcwd() #get current work direction.
os.chdir(path) #change direction
Filelist = []
for home, dirs, files in os.walk(path):
for filename in files:
#文件名列表,包含完整路径
#Filelist1.append(os.path.join(home, filename))
#文件名列表,只包含文件名
Filelist.append(filename)
return Filelist def main():
n=0
for file in filelist:
os.getcwd() #get current work direction.
os.chdir(path) #change direction
with open(file,mode='r',encoding='utf-8') as f1:
data=f1.read()
f1.close() #切换到新的路径下
os.getcwd() #get current work direction.
os.chdir(newpath) #change directio #读取文件的内容写入到新file文件下
with open(file,mode='w',encoding='utf-8') as f2:
n=n+1
##提取字段 拼装写入##
#系统简称大写
SYST=file[file.find("")+0:file.find("")+4].upper()
#SYST=SYST.upper()
#print(SYST)
#发送行号
SEND1234SEND=""
#接收行号
RECV1234RECV=""
#删除正则匹配的一行
data = re.sub(r'<!--.*-->\n', "", data)
#报文类型
MSGTYPE0MSGTYPE=data[data.find("tech:xsd:")+9:data.find("tech:xsd:")+24]
#MsgID
MSGRID0000MSGRID=data[data.find("<MsgId>")+7:data.find("<MsgId>")+23]
#拼装的报文头
head="{H:02"+SEND1234SEND+" "+SYST+RECV1234RECV+" "+SYST+"00000000000001XML"+MSGTYPE0MSGTYPE+" "+MSGRID0000MSGRID+" "+MSGRID0000MSGRID+" 3D }" f2.write(head+'\n')
f2.write(data)
f2.close() if os.path.isfile(file):
print(file,"转换完成!")
else:
print(file,"转换失败!") print("共转换个文件数:",n) if __name__ == '__main__':
path='E:\\办公文档\\LR项目资料\\XML格式报文示例'
newpath='E:\\Python_test\\读取文件\\newfiles' #path=input("请输入文件路径:")
#newpath=input("请输入转换后新文件路径:") filelist = get_filelist(dir)
#print(filelist)
#不用加引号,如果是多级目录,只判断最后一级目录是否存在
if os.path.isdir(newpath):
#print ('dir exists')
pass
else:
#print ('dir not exists')
os.mkdir(newpath) main()

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

Python学习笔记五(读取提取写入文件)的更多相关文章

  1. python学习笔记:第8天 文件操作

    目录 1. 文件操作介绍 2. 文件操作的几种方式 3. 文件的操作的方法 1. 文件操作介绍 说到操作文件我们肯定会想到流,文件的操作都是通过流来操作的.在python中文件的操作非常简单,并不像J ...

  2. python学习笔记~INI、REG文件读取函数(自动修复)

    引入configparser,直接read整个INI文件,再调用get即可.但需要注意的是,如果INI文件本身不太规范,就会报各种错,而这又常常不可避免的.本文自定义函数通过try...except. ...

  3. python学习笔记(五)-文件操作2

    一.文件修改 现有文件file.txt,内容如下:二十四节气歌春雨惊春清谷天,夏满芒夏暑相连.秋处露秋寒霜降,冬雪雪冬小大寒.上半年逢六廿一,下半年逢八廿三.每月两节日期定,最多相差一二天.要求:将文 ...

  4. python学习笔记之读取配置文件【转自https://my.oschina.net/u/3041656/blog/793467】

    [转自https://my.oschina.net/u/3041656/blog/793467] 最近在接触利用python来写测试框架,本人也是个刚接触python,所以是个小菜鸟,今天开始,一点点 ...

  5. python学习笔记五 模块下(基础篇)

    shevle 模块 扩展pickle模块... 1.潜在的陷进 >>> import shelve>>> s = shelve.open("nb" ...

  6. Java学习笔记——JDBC读取properties属性文件

    Java 中的 properties 文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件. 文件的内容是格式是"键=值"(key-valu ...

  7. Python学习笔记_Python向Excel写入数据

    实验环境 1.OS:Win 10 64位 2.Python 3.7 3.如果没有安装xlwt库,则安装:pip install xlwt 下面是从网上找到的一段代码,网上这段代码,看首行注释行,是在L ...

  8. Python学习笔记(三):文件和集合操作

    python string与list互转 因为python的read和write方法的操作对象都是string.而操作二进制的时候会把string转换成list进行解析,解析后重新写入文件的时候,还得 ...

  9. Gin-Go学习笔记五:Gin-Web框架 文件的操作

    文件的操作 1>     文件的创建,删除,写入内容,读取内容.(此实例使用的是text文件) 2>     Gin 并没有提供文件的创建,删除,读写这个操作的专门的接口,所以采用的是常用 ...

随机推荐

  1. (转载)非常完善的Log4net配置详细说明

    一.前言 在项目中,对项目的日志收集是非常重要的,这里我就说说代码的异常日志收集.收集异常日志,有很多第三方成熟的框架,我这里就介绍一下我常用的Log4net. Log4Net介绍 Log4net 是 ...

  2. MySQL基础/数据库和表的设计

    MySQL基础 一:安装MySQL(按步骤操作,如果下载后使用不了,试着用360安全卫士卸载MySQL,清除残留的,方便在下载造成不必要的麻烦:如果这样也不行,那就需要重做系统在进行下载) 二:创建数 ...

  3. 第四周课程总结&试验报告(二)

    实验二 Java简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方法的作用,掌握用类作为类型声明变量和方法返回值: 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性 ...

  4. 为什么Kubernetes使用Pod作为最小调度单元

    一.Pod说明 Pod只是一个逻辑概念,一个原子调度单位,其优势在于 可以统一调度一组容器到指定的node上 共享资源,Pod的容器可以使用localhost进行通信,使用volume进行文件共享.使 ...

  5. Spring Cloud异步场景分布式事务怎样做?试试RocketMQ

    一.背景 在微服务架构中,我们常常使用异步化的手段来提升系统的 吞吐量 和 解耦 上下游,而构建异步架构最常用的手段就是使用 消息队列(MQ),那异步架构怎样才能实现数据一致性呢?本文主要介绍如何使用 ...

  6. 运用 CSS methodologies 去实现模块化

    一.什么是 CSS methodologies CSS methodologies,可以理解成 设计模式,也可以理解成 css 规范,市面使用情况如下图: 上图来源:https://2019.stat ...

  7. [DE] ML on Big data: MLlib

    Pipeline的最终目的就是学会Spark MLlib,这里先瞧瞧做到心里有数:知道之后要学什么,怎么学. 首要问题 一.哪些机器学习算法可以并行实现? 四类算法:分类.回归.聚类.协同过滤 以及特 ...

  8. PostMethod和GetMethod用法

    注:新浪短接口参考地址:https://www.douban.com/note/249723561/      将长的url链接转换成短链接 一.GetMethod try { HttpClient ...

  9. JsonMessageView工具类

    前言 工具类 示例: 前端发送ajax请求 springmvc控制层接收请求并处理请求     前言: 在工作中使用springmvc web框架时常常会发送一个ajax请求,我们在控制层接收到请求并 ...

  10. 深入理解什么是Java泛型?泛型怎么使用?【纯转】

    本篇文章给大家带来的内容是介绍深入理解什么是Java泛型?泛型怎么使用?有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所助. 一.什么是泛型 “泛型” 意味着编写的代码可以被不同类型的对象所 ...