python实现文档多行操作(匹配,删除,gz文档处理)


#!/usr/bin/python3

import os
import sys

input_list = input("please in put file name: src file,ext file1,ext file2,...(ext file name must be *.gz)\n")

input_list_split = input_list.split(',')
#############################################################################################################################################################################################################################
#                                                                                           gzip & open src file
#
#############################################################################################################################################################################################################################
print("src file is %s\n" % (input_list_split[0]))
src_file_split = input_list_split[0].split('.')

if src_file_split[-1] == 'gz' :
    os.system("gzip -d %s" % (input_list_split[0]))
    cur_src_file = '.'.join(src_file_split[0:-1])
else :
    cur_src_file = '.'.join(src_file_split)

for cur_ext_file in input_list_split[1:] :
    cur_src_file_handle = open(cur_src_file)
    print(cur_ext_file)
    #########################################################################################################################################################################################################
    ##                                                                      del match word, first step 
    #########################################################################################################################################################################################################
    if not os.path.exists('del_interconnect_tmp.log') :
        os.mknod('del_interconnect_tmp.log')
    del_interconnect_tmp_handle = open('del_interconnect_tmp.log','r+')
    while (1) :
        cur_line = cur_src_file_handle.readline()
        if (len(cur_line) == 0) :
            break
        else :
            if 'XXXXX' in cur_ext_file :
                if '/xxxxx/'  in cur_line :
                    continue                                 ##do not write matched line in tmp file
                else :
                    del_interconnect_tmp_handle.write(cur_line)
            elif 'XXXXX' in cur_ext_file :
                if '/xxxxx/'  in cur_line :
                    continue
                else :
                    del_interconnect_tmp_handle.write(cur_line)
           else :
                print("extract file name Error!!!")
#########################################################################################################################################################################################################
##                                                                      del empty cell, second step 
#########################################################################################################################################################################################################
    del_interconnect_tmp_handle.seek(0,os.SEEK_SET)
    if not os.path.exists('del_empty_cell.log') :
        os.mknod('del_empty_cell.log')

    del_empty_cell_handle = open('del_empty_cell.log','r+')
    while (1) :
        cur_line = del_interconnect_tmp_handle.readline()
        if (len(cur_line) == 0) :
            break
        else :
            #print(del_empty_cell_handle.tell())
            if cur_line[0:-1] == '(CELL' :
                cur_line_tmp_0 = cur_line
                cur_line_tmp_1 = del_interconnect_tmp_handle.readline()
                cur_line_tmp_2 = del_interconnect_tmp_handle.readline()
                cur_line_tmp_3 = del_interconnect_tmp_handle.readline()
                cur_line_tmp_4 = del_interconnect_tmp_handle.readline()
                cur_line_tmp_5 = del_interconnect_tmp_handle.readline()
                cur_line_tmp_6 = 'xxx'
                if '(DELAY' in cur_line_tmp_2 or ('(ABSOLUTE' in cur_line_tmp_4 and cur_line_tmp_5[0:-1] == '    )') :
                    while (1) :
                        if cur_line_tmp_6[0] == ')' :
                            break
                        else :
                            cur_line_tmp_6 = del_interconnect_tmp_handle.readline()
                    continue## dont write matched empty cell into file, first we need store each cell(multiple lines) for match
                else :
                    del_empty_cell_handle.write(cur_line_tmp_0)
                    del_empty_cell_handle.write(cur_line_tmp_1)
                    del_empty_cell_handle.write(cur_line_tmp_2)
                    del_empty_cell_handle.write(cur_line_tmp_3)
                    del_empty_cell_handle.write(cur_line_tmp_4)
                    del_empty_cell_handle.write(cur_line_tmp_5)
            else :
                del_empty_cell_handle.write(cur_line)
    print("del_empty_cell write done")
    del_interconnect_tmp_handle.close()
    del_empty_cell_handle.close()
    cur_src_file_handle.close()
    os.system("rm -fr del_interconnect_tmp.log")
    os.system("rm -fr del_empty_cell.log.gz")
    os.system("gzip del_empty_cell.log")
    if 'gz' in cur_ext_file :
        os.system("mv del_empty_cell.log.gz %s" % (cur_ext_file))
    else :
        os.system("mv del_empty_cell.log.gz %s.gz" % (cur_ext_file))
os.system("gzip %s" % (cur_src_file))

1.多行操作必须把多行暂存起来
2.aaa[0:-1]不包含倒数第一个元素
3.aaa[-1]倒数第一个元素
4.gz文档的处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值