python的读取和追加_python读取指定行并追加到新文件中

本文介绍如何使用Python将一个包含多个CREATE TABLE语句的文本文件拆分为不同的文件,根据预定义的表名列表。首先,定义了全量、拉链和增量表的列表,然后通过读取原始文件,找到每个表在文件中的位置,并追加到相应的新文件中。
摘要由CSDN通过智能技术生成

记一个python

原始sql建表文件.sql,经过用notepad++标记 +正则处理后文件test.txt为以下格式

#

CREATE TABLE `sajt_auth`

`ID`

`ROLE_ID`

`PAGE_ID`

`BUTTON_ID`

#

CREATE TABLE `sajt_auth_dc`

`ID`

`ROLE_ID`

`PAGE_ID`

`BUTTON_ID`

#

CREATE TABLE `sajt_button`

`ID`

`PAGE_ID`

`NAME`

`DEFS`

`ONCLICK`

`ACTION`

`NEW_PAGE_ID`

`SQL`

`COMMENTS`

`ORDER_NUM`

`TYPE`

#

需要从所有建表语句中划分出所需全量、增量等表

已通过excel筛选出对应表集合,从test.txt文件将其区分分开保存。

思路为获取对应种类表的每个表名在源文件的位置,保存在一个list中,然后再通过list获取源文件内容并追加道新文件。

import re

# 全量表

list1 = ["sajt_jspztxx",

"sajt_user_timetask"

]

# 拉链表

list2 = ['sajt_user',

'tbl_dsptxx',

'tbl_ec_document_11',

'tbl_ec_document_12'

]

# 增量表

list3 = ['tbl_ec_alipay']

########################################

# 划分全量表、拉链表、增量表 结果存入txt文件 test.txt文件为原始文件

# filename 想要输出的文件名

# lists 各种表所在行列表

########################################

def split_tables(filename, lists):

file_path = 'C:\\Users\\LZX\\Desktop\\' + filename

f = open(file_path, 'a', encoding='UTF-8')

for i in lists:

file_obj1 = open('C:\\Users\\LZX\\Desktop\\test.txt', 'r', encoding='UTF-8')

for line in file_obj1.readlines()[i - 1:]:

if re.match("#", line):

f.write('\n')

break

else:

f.write(line)

file_obj1.close()

f.close()

########################################

# 根据表明获取在文件中的位置

# lists 对应全局list所包含表明 遍历出在文件中的每一行

########################################

def split_lists(lists):

filepath = 'C:\\Users\\LZX\\Desktop\\test.txt'

file_obj = open(filepath, 'r', encoding='UTF-8')

list_result = []

count = 0

for context in file_obj:

count += 1

for str1 in lists:

rex = ".*" + str1 + ""

result = re.match(rex, context)

if result:

list_result.append(count)

file_obj.close()

return list_result

########################################

# list1 list2 list3 全局变量

########################################

if __name__ == '__main__':

list_ql = []

list_zl = []

list_ll = []

list_ql = split_lists(list1)

list_ll = split_lists(list2)

list_zl = split_lists(list3)

split_tables("table_ql", list_ql)

split_tables("table_ll", list_ll)

split_tables("table_zl", list_zl)

输出结果:

CREATE TABLE `sajt_user`

`ID`

`LOGIN_ID`

`LOGIN_PWD`

`NICKNAME`

`CREATE_DATE`

`PWD_UPDATE_DATE`

`LAST_LOGIN_DATE`

`EMAIL`

`TEL`

`ROLE_ID`

`SS_NSZT`

`SKY`

`FHR`

`MASTER`

`JTBM`

`QYBM`

`NSRSBH`

`KPDBM`

`SSZZ`

`JSSF`

CREATE TABLE `sajt_user_timetask`

`ID`

`LOGIN_ID`

`LOGIN_PWD`

`NICKNAME`

`CREATE_DATE`

CREATE TABLE `tbl_dsptxx`

`ID`

`DSPTBM`

`ZC_DATE`

`STATE`

`CA_FILE`

`CA_FILE_PFX`

标签:file,读取,python,CREATE,list,lists,追加,sajt,ID

来源: https://blog.csdn.net/weixin_41772761/article/details/110038218

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值