python读取匹配行并追加到新文件中
记一个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_bu
·
记一个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`
更多推荐
已为社区贡献1条内容
所有评论(0)