美文网首页
处理文本数据

处理文本数据

作者: Canon_2020 | 来源:发表于2020-04-20 09:38 被阅读0次
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Date    : 2018-01-05 16:12:27
    # @Author  : Your Name (you@example.org)
    # @Link    : http://example.org
    # @Version : 3.6.1
    
    import fileinput
    import linecache
    
    
    def delete_firstline(file_path):
        """
        删除文本的第一行数据
    
        Args:
            path: 文件的绝对路径
        """
        # 用linecache读取文件内容 (1G大小的文件,效率还可以), 每一行为列表中的一个元素
        line_str = linecache.getlines(file_path)
        # 加上参数inplace=1, 则会直接操作文件
        line_object = fileinput.input(file_path, inplace=1)
        for line in line_object:
            # 判断是否是第一行或者空行
            if not fileinput.isfirstline() and len(line.split()) != 0:
                # filelineno() 返回当前读取的行的行号
                if fileinput.filelineno() == len(line_str):
                    print(line.replace('\n', ''), end='')
                else:
                    print(line.replace('\n', ''))
        fileinput.close()
    
    
    def delete_lines(file_path, num):
        """
        删除文本的多行数据
    
        Args:
            path: 文件的绝对路径
        """
        # 用linecache读取文件内容 (1G大小的文件,效率还可以), 每一行为列表中的一个元素
        line_str = linecache.getlines(file_path)
        # 加上参数inplace=1, 则会直接操作文件
        line_object = fileinput.input(file_path, inplace=1)
        for line in line_object:
            if fileinput.filelineno() > num and len(line.split()) != 0:
                if fileinput.filelineno() == len(line_str):
                    print(line.replace('\n', ''), end='')
                else:
                    print(line.replace('\n', ''))
        fileinput.close()
    
    
    def query_firstline(file_path):
        """
        查询文本的第一行数据
    
        Args:
            path: 文件的绝对路径
        """
        line_object = fileinput.input(file_path)
        first_value = ''
        for line in line_object:
            if fileinput.isfirstline():
                first_value = line
                if len(fileinput.filename().split('-')) >= 2:
                    print(fileinput.filename().split('-')[-2] + ':  ' + first_value.replace('\n', ''))
                else:
                    print(fileinput.filename().replace('\\', '/').split('/')[-1] + ':  ' + first_value.replace('\n', ''))
        fileinput.close()
    
    
    def query_lines(file_path, num):
        """
        查询文本的多行数据
    
        Args:
            path: 文件的绝对路径
        """
        line_object = fileinput.input(file_path)
        first_value = ''
        for line in line_object:
            if fileinput.lineno() <= num:
                first_value = line
                if len(fileinput.filename().split('-')) >= 2:
                    print(fileinput.filename().split('-')[-2] + ':  ' + first_value.replace('\n', ''))
                else:
                    print(fileinput.filename().replace('\\', '/').split('/')[-1] + ':  ' + first_value.replace('\n', ''))
        fileinput.close()
    
    
    def test():
        path = 'E:/TaiheiotProject/TestingDocument/Jmeter/csv/Saas平台-1.17版本优化功能'
        files = ['/吉林单品抽奖/JL20180127001-长白山(本色)(盒)-吉林.txt',
                 '/吉林单品抽奖/JL20180127002-长白山(心归)(盒)-吉林.txt',
                 '/吉林单品抽奖/JL20180127003-长白山(记忆.1999)(盒)-吉林.txt',
                 '/吉林单品抽奖/JL20180127004-长白山(777)(盒)-吉林.txt',
                 '/吉林单品抽奖/JL20180127005-长白山(福袋)-吉林.txt',
                 '/吉林单品抽奖/JL20180127006-长白山(软红)(条)-吉林.txt',
                 '/陕西天赋细支/SX20180127002-别动我的-天赋细支-陕西.txt',
                 '/陕西延安/SX20180127001-别动我的-延安1935-陕西.txt',
                 '/陕西招财猫1600/SX20180127003-别动我的-招财猫-陕西.txt'
                 ]
    
        for file in files:
            file_path = path + file
            query_firstline(file_path)
            # delete_firstline(file_path)
            # query_lines(file_path, 5)
            # delete_lines(file_path, 5)
    
    
    if __name__ == '__main__':
        test()
    
    

    相关文章

      网友评论

          本文标题:处理文本数据

          本文链接:https://www.haomeiwen.com/subject/gbktwctx.html