ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2020-11-24 09:04:13  阅读:280  来源: 互联网

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


记一个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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有