处理文本数据

2020-04-20  本文已影响0人  Canon_2020
#!/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()

上一篇 下一篇

猜你喜欢

热点阅读