python-取指定文件行

博客之旅开始啦~

既然开始写博客,怎能缺少自我介绍呢,哈哈!

我叫大哥哥,是一名python爱好者,我之前是学易语言的,当我接触到python之后,就被python优雅的语法深深所吸引,带着极大的兴趣,慢慢的入门了python,学了python之后,易语言就再没打开过,或许,这就是python的魅力吧~

写博客呢,也是想记录一下平时写过的代码和思路,更多的是,和更多的人互相交流,发现自己的不足,如果大家发现我写的有不对的地方或者有更优雅的写法,请不要吝啬你的建议哇~

python-取指定文件行功能
提取文本中指定的行数----比如提取前10行的文本

代码思路

.在桌面创建一个:
取指定文件件行文件夹(旧. txt,新.txt)

代码实现:

import os

def makeFild():
    #创建文件夹和文本
    if not os.path.exists(r'C:\Users\Administrator\Desktop\取指定文件行'):
        os.makedirs(r'C:\Users\Administrator\Desktop\取指定文件行')

    with open(r'C:\Users\Administrator\Desktop\取指定文件行\旧.txt','a') as f:
        f.write('')

    with open(r'C:\Users\Administrator\Desktop\取指定文件行\新.txt','a') as f:
        f.write('')

二,将 旧.txt 中的文本去除:
空行,所有空格,重复文本(去除后 重新写入 旧.txt)

代码实现:

def removeRepetition():
    #去除  空行 空格 重复
    with open(r'C:\Users\Administrator\Desktop\取指定文件行\旧.txt','r') as f:
        textList = f.readlines()

    textList = [text.strip().replace(' ','') for text in textList if text != '\n' and text != '']  #去除空行 和 所有空格

    print('-' * 10,'详细信息','-' * 10)
    print('总数:',len(textList))

    unRepetitionTextList = list()

    for text in textList:  #去除重复文本
        if text not in unRepetitionTextList:
            unRepetitionTextList.append(text)

    print('去重:',len(textList)-len(unRepetitionTextList))
    print('剩余:',len(unRepetitionTextList))
    print('-' * 10,'详细信息','-' * 10)

    with open(r'C:\Users\Administrator\Desktop\取指定文件行\旧.txt', 'w') as f:  #写入去重后的文本
        for text in unRepetitionTextList:
            f.write(text+'\n')

三:提取需要的文本行数,并将提取到的文本写入 新.txt

代码实现:

def extractText():
    #提取文本
    lineNum = int(input('提取行数: '))

    with open(r'C:\Users\Administrator\Desktop\取指定文件行\旧.txt','r') as f:
        textList = f.readlines()

    if textList:
        with open(r'C:\Users\Administrator\Desktop\取指定文件行\新.txt', 'w') as f:
            for _ in range(lineNum):  # 提取输入的行数
                f.write(textList.pop(0))

    print('剩余总数:',len(textList))

    with open(r'C:\Users\Administrator\Desktop\取指定文件行\旧.txt', 'w') as f:
        for text in textList:
            f.write(text)

    print('ok~')
    input('按下回车键结束程序...')

完整代码实现:

#-*- coding = utf-8 -*-
#@Time : 2021/1/16
#@Author : 大哥哥
#@File : 取指定文件行.py
import os

def makeFild():
    #创建文件夹和文本
    if not os.path.exists(r'C:\Users\Administrator\Desktop\取指定文件行'):
        os.makedirs(r'C:\Users\Administrator\Desktop\取指定文件行')

    with open(r'C:\Users\Administrator\Desktop\取指定文件行\旧.txt','a') as f:
        f.write('')

    with open(r'C:\Users\Administrator\Desktop\取指定文件行\新.txt','a') as f:
        f.write('')

def removeRepetition():
    #去除  空行 空格 重复
    with open(r'C:\Users\Administrator\Desktop\取指定文件行\旧.txt','r') as f:
        textList = f.readlines()

    textList = [text.strip().replace(' ','') for text in textList if text != '\n' and text != '']  #去除空行 和 所有空格

    print('-' * 10,'详细信息','-' * 10)
    print('总数:',len(textList))

    unRepetitionTextList = list()

    for text in textList:  #去除重复文本
        if text not in unRepetitionTextList:
            unRepetitionTextList.append(text)

    print('去重:',len(textList)-len(unRepetitionTextList))
    print('剩余:',len(unRepetitionTextList))
    print('-' * 10,'详细信息','-' * 10)

    with open(r'C:\Users\Administrator\Desktop\取指定文件行\旧.txt', 'w') as f:  #写入去重后的文本
        for text in unRepetitionTextList:
            f.write(text+'\n')

def extractText():
    #提取文本
    lineNum = int(input('提取行数: '))

    with open(r'C:\Users\Administrator\Desktop\取指定文件行\旧.txt','r') as f:
        textList = f.readlines()

    if textList:
        with open(r'C:\Users\Administrator\Desktop\取指定文件行\新.txt', 'w') as f:
            for _ in range(lineNum):  # 提取输入的行数
                f.write(textList.pop(0))

    print('剩余总数:',len(textList))

    with open(r'C:\Users\Administrator\Desktop\取指定文件行\旧.txt', 'w') as f:
        for text in textList:
            f.write(text)

    print('ok~')
    input('按下回车键结束程序...')

if __name__ == '__main__':
    makeFild()
    removeRepetition()
    extractText()

如果有更优雅的写法或者更好的建议,欢迎指出~

你可能感兴趣的:(python-文件操作,python)