#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. MVC设计模式用于用户注册表单提交到数据库的中文乱码问题

    本文引用自:http://blog.csdn.net/wangchangshuai0010/article/details/12714575 java.sql.SQLException: Incorr ...

  2. 浅谈独立特征(independent features)、潜在特征(underlying features)提取、以及它们在网络安全中的应用

    1. 关于特征提取 0x1:什么是特征提取 特征提取研究的主要问题是,如何在数据集未明确表示结果的前提下,从中提取出重要的潜在特征来.和无监督聚类一样,特征提取算法的目的不是为了预测,而是要尝试对数据 ...

  3. Java连载30-方法重载、方法递归

    一.方法重载 1.又被称为overload 2.方法重载使用场景 功能类似的时候,尽可能仍方法名相同(但是功能不同或者不相似的时候,方法名尽量不同) 3.什么条件满足之后,可以构成方法重载 (1)在同 ...

  4. SpannableString设置文本背景色

    参考内容: http://blog.csdn.net/harvic880925/article/details/38984705 http://blog.it985.com/14433.html 1. ...

  5. 【第十篇】easyui-datagrid排序 (转)

    本文体验datagrid的排序. □ 思路 当点击datagrid的标题,视图传递给Controller的Form Data类似这样:page=1&rows=10&sort=Custo ...

  6. SqlServer2014怎样还原数据库

    场景 在SqlServer2014企业版上怎样进行数据库的还原,首先你得有一个其他数据 的备份文件. 实现 打开cmd,输入sql,打开SqlServer 2014 Management Studio ...

  7. CSS——边框设置

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. TestNG(十二) 参数化测试

    <?xml version="1.0" encoding="utf-8" ?> <suite name = "parameter&q ...

  9. CSS3-边框 border

    一.圆角效果 border-radius 使用方法: border-radius:10px; /* 所有角都使用半径为10px的圆角 */ border-radius: 5px 4px 3px 2px ...

  10. Elasticsearch(10) --- 内置分词器、中文分词器

    Elasticsearch(10) --- 内置分词器.中文分词器 这篇博客主要讲:分词器概念.ES内置分词器.ES中文分词器. 一.分词器概念 1.Analysis 和 Analyzer Analy ...