怎么快速删除文档的数据?

我有一个txt文本文档,这个文档有10w行,我需要重第5w删除到第1w行,我如果通过手动选中去删除话,选完这些要删除的数据都要好几分钟,很麻烦,也没有快速便捷的删除方式?

shell或者python写个脚本就可以的啊


import os
# delete_lines(源文件夹,目标文件夹,删除的起始行,删除的终止行)
def delete_lines(source,target,begin,end):
    for root,dirs,files in os.walk(source):
        for file in files:
            f1=open(os.path.join(root,file),"rb")      # 打开源文件
            f2=open(os.path.join(target,file),"wb")    # 打开目标文件
            count=0
            while count < (begin-1):
                current_line=f1.readline()
                f2.write(current_line)        # 将被删除部分之前的每一行写入新文件
                count+=1                      # while循环结束后,光标位于被删除部分首行
            for i in range(end-begin+2):      # 移动光标 跳至被删除部分的下一行
                next_line=f1.readline()
            while next_line:
                f2.write(next_line)
                next_line=f1.readline()       # 将被删除部分之后的每一行写入新文件
            f1.close()
            f2.close()
if __name__ == '__main__':
    source_path = r'F:\Annotations'
    target_path = r'F:\My_Annotations'
    delete_lines(source_path,target_path,26,37)   # 删除26-37行
    print('finish!')

参考如下链接进行修改可完成删除txt文本文件第5000到第10000行,具体办法是通过逐行读取原文件,然后写入新文件,当第5000到10000行时不写入新文件,然后就循环结束,删除原文件,把新文件的文件名重命名为旧文件名,如此实现删除原文件第5000到第10000行的目的,测试txt文件为网络下载的网络小说(仅用于代码测试),代码如下:
参考链接:
https://bbs.csdn.net/topics/250043211


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;

public class deleteTxtSomeLine {
//https://bbs.csdn.net/topics/250043211
    
    public static void main(String[] args) throws IOException {
        File file = new File("F:\\dpcq.txt");  \\原文件,即要删除第5000到第10000行的文件
        File file2 = new File("F:\\dpcqresult.txt");  \\新文件,临时名为dpcqresult.txt,执行完写入操作后会重名为旧原文件名,实现替代旧文件
        BufferedReader reader = new BufferedReader(new FileReader(file));
        PrintWriter writer = new PrintWriter(file2);
        String line;
        int lineNum=0;
        while ((line = reader.readLine()) != null) {
            lineNum++;
            // 判断条件,根据自己的情况书写,会删除所有符合条件的行
            if ( lineNum>=5000&&lineNum<=10000) {
            // 读取后面的几行,废弃
            // reader.readLine();
            // reader.readLine();
            // reader.readLine();
                System.out.println("第"+lineNum+"行内容为:"+line+",跳过!");
                continue;
            }
            writer.println(line);
            writer.flush();
        }
        reader.close();
        writer.close();

        // 删除老文件
        file.delete();
        file2.renameTo(file);
        }


}

img


public static  void deleteLine(File file,Integer startLine,Integer endLine) throws  IOException{
        BufferedReader bufferedReader = null;
        BufferedWriter bufferedWriter = null;
        String line = null;
        try {
            bufferedReader = new BufferedReader(new FileReader(file));
            bufferedWriter = new BufferedWriter(new FileWriter("D://aim.txt"));
            Object[] objects =  bufferedReader.lines().toArray();
           if (objects.length < endLine || startLine >= endLine){
                return;
            }
            for (int i = 0; (i < startLine-1 && objects[i] != null); i++) {
                bufferedWriter.write(objects[i].toString());
                bufferedWriter.newLine();
            }
            for (int i = endLine; (i < objects.length && objects[i] != null); i++) {
                bufferedWriter.write(objects[i].toString());
                bufferedWriter.newLine();
            }

        }finally {
            bufferedWriter.close();
            bufferedReader.close();
        }
    }

JAVA 代码


我从CSDN技能树中找了一些相关资料给你, 你可以看下: