垃圾代码记录——实现对比文件内容

问题描述:p3下有4个文件,一个文件内有若干行内容,每行内容属于一个id,要求在其他3个文件内找出包含id的内容,并将该行内容输出到新的文件。

java版

package com.example.demo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Test2 {

	public static void main(String[] args) throws IOException {
		String path = "C:/Users/~~~/Desktop/p/p3";

		File files = new File("C:/Users/~~~/Desktop/p/p3");

		File outFiles = new File(path + File.separator + "汇总.txt");
		OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(outFiles));
		BufferedWriter writer = new BufferedWriter(write);

		String[] fileList = files.list();
		for (String f : fileList) {
			int i = 0;
			File file = new File("C:/Users/~~~/Desktop/p/p3/~~~.txt");
			FileInputStream fisR = new FileInputStream(file);
			InputStreamReader isr = new InputStreamReader(fisR, "UTF-8");
			BufferedReader br = new BufferedReader(isr);
			if ("pidcf.txt".equals(f) || "汇总.txt".equals(f)) {
				continue;
			}

			String line = br.readLine();
			while (line != null) {
				i ++;
				File p = new File(path + File.separator + f);
				FileInputStream fis = new FileInputStream(p);
				InputStreamReader is = new InputStreamReader(fis, "UTF-8");
				BufferedReader b = new BufferedReader(is);

				System.out.println(line+ "  "+p.getName() + " "+i);
				String content = getLine(b);
				while (content != null) {
					if (content != null && content.contains(line)) {
						writer.write(content);
						writer.newLine();
						System.out.println("co");
					}
					content = getLine(b);

				}
				line = br.readLine();
				fis.close();
				is.close();
				b.close();
			}
			writer.flush();
			fisR.close();
			isr.close();
			br.close();
		}

		write.close();
		writer.close();
	}

	private static String getLine(BufferedReader b) {
		// TODO Auto-generated method stub
		String str = null;
		try {
			str = b.readLine();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return str;
	}

}

python版

# -*-coding:utf-8-*-
import os
import time

tickstart = time.time()
path = "C:/Users/~~~/Desktop/p/p3"
print(path)
file_no = ['汇总.txt','pidcf.txt','test.txt']
file_r = os.listdir(path)
file_write = open(path + "/test.txt",'w')
# i=1

for file in file_r:
	if file in file_no:
		continue
	# print(file + " " + )
	file_index = open(path+"/pidcf.txt")
	lines = file_index.readlines()
	file_read = open(path + "/" + file,encoding='utf-8')
	file_read_line = file_read.readlines()
	i = 1
	for line in lines:
		print(file +" " + str(i) + " " + line)
		# print(line)
		
		# print(file_read_line)
		# print(line)
		for file_line in file_read_line:

			if str(line).strip() in str(file_line):
				print('co')
				file_write.writelines(file_line)
				file_write.write('\n')
		i = i + 1
	file_read.close()
	file_index.close()
file_write.close()
tickend = time.time()
print(tickend-tickstart)
t = tickend - tickstart
t1 = round(t)/60/60
print('using :' + t1 +'h')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值