python文件处理(对比和筛选)

#!/user/bin/python
#!coding=utf-8
# -*- coding: utf-8 -*-
# 2017-9-25
#author:jingwenshuai
import sys
import difflib
import re
import os

#--------------------------------比对两文件,将结果存入Result.html-------------------------------------------#

# 读取配置文件函数
def read_file(file_name):
    try:
        file_handle = open(file_name, ‘r‘)
        text = file_handle.read().splitlines()         # 读取后以行进行分割
        file_handle.close()
        return text
    except IOError as error:
        print ‘Read file Error: {0}‘.format(error)
        sys.exit()

# 比较两个文件并输出html格式的结果
def compare_file(file1_name, file2_name):
    if file1_name == "" or file2_name == "":
        print ‘文件路径不能为空:file1_name的路径为:{0}, file2_name的路径为:{1} .‘.format(file1_name, file2_name)
        sys.exit()
    text1_lines = read_file(file1_name)
    text2_lines = read_file(file2_name)
    diff = difflib.HtmlDiff()                             # 创建htmldiff 对象
    result = diff.make_file(text1_lines,text2_lines)     # 通过make_file 方法输出 html 格式的对比结果
    #  将结果保存到result.html文件中并打开
    try:
        with open(‘result.html‘, ‘w‘) as result_file:     #同 f = open(‘result.html‘, ‘w‘) 打开或创建一个result.html文件
            result_file.write(result)                     #同 f.write(result)
    except IOError as error:
        print ‘写入html文件错误:{0}‘.format(error)

#------------------------------------取出不同部分存入Result.txt-------------------------------------------#

#取出不同部分存入Result.txt
def result(file1_name,file2_name):
    if file1_name == "" or file2_name == "":
        print ‘文件路径不能为空:file1_name的路径为:{0}, file2_name的路径为:{1} .‘.format(file1_name, file2_name)
        sys.exit()
    str1=[]
    str2=[]
    str_dump=[]
    #将A.txt的内容逐行读到str1中
    with open(file1_name,‘r‘) as fa:                #相当于fa=open(file1_name,‘r‘)
        for line in fa.readlines():
            str1.append(line.replace("\n",‘‘))      #line.replace("\n",‘‘) 去掉换行符\n
    #将B.txt中的内容逐行读到str2中
    with open(file2_name,‘r‘) as fb:
        for line in fb.readlines():
            str2.append(line.replace("\n",‘‘))

    #将两个文件中重复的行,添加到str_dump中
    for i in str1:
        if i in str2:
            str_dump.append(i)

    #将两个文件的行合并,并去重
    str_all=set(str1+str2)

    #将重复的行,在去重的合并行中,remove掉,剩下的就是不重复的行了
    for i in str_dump:
        if i in str_all:
            str_all.remove(i)
    #写入文件中
    with open("Result.txt",‘w+‘) as fc:
        for i in list(str_all):
            fc.write(i+‘\n‘)
    fa.close()
    fb.close()
    fc.close()

if __name__ == "__main__":
    x = raw_input(u"请输入第一个文件路径:")
    y = raw_input(u"请输入第二个文件路径:")
    compare_file(x, y)    #传入两文件的路径
    result(x,y)    #传入两文件的路径

原文地址:https://www.cnblogs.com/yizhipanghu/p/9701059.html

时间: 2024-10-21 07:02:17

python文件处理(对比和筛选)的相关文章

Python文件操作及seek偏移详解

本文和大家分享的主要是python中文件操作及seek偏移相关内容,一起来看看吧,希望对大家学习python有所帮助. 一.Python文件操作中的编码 本次测试是基于Python 2.7.12  OS:Ubuntu 16.04  pycharm环境,以及Win7下2.7.12; 首先说下汉字在文件中占用的字节数,这个先看以下实验(Win7)下 因为Linux下不支持gbk,本文不讲utf-8 ,gbk编码具体知识.本次实验只讲解python在使用utf-8和gbk编码时,对汉字占用的字节有所不

【Python文件处理】递归批处理文件夹子目录内所有txt数据

因为有个需求,需要处理文件夹内所有txt文件,将txt里面的数据筛选,重新存储. 虽然手工可以做,但想到了python一直主张的是自动化测试,就想试着写一个自动化处理数据的程序. 一.分析数据格式 需要处理的数据是txt格式存储的.下图中一行中的数据依次是,帧.时间.编号.特征点编号.特征点名字.特征点世界坐标x,y,z,特征点屏幕坐标x,y,一共32个特征点,最后6个数据是头部姿态的位置x,y,z和偏转角度x,y,z.一行共计233个字段. 需要完成的工作是,把特征点的编号,世界坐标,屏幕坐标

Go/Python/Erlang编程语言对比分析及示例

本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性,不过最主要的原因是这几个我比较熟悉. Go的很多语言特性借鉴与它的三个祖先:C,Pascal和CSP.Go的语法.数据类型.控制流等继承于C,Go的包.面对对象等思想来源于Pascal分支,而Go最大的语言特色,基于管道通信的协程并发模型,则借鉴于CSP分支. Go/Python/Erlang语言特性对比 如<编程语言与范式>一文所说,不管语言如何层出不穷

Python文件和数据格式化(教程)

文件是一个存储在副主存储器的数据序列,可包含任何数据内容. 概念上,文件是数据的集合和抽象,类似的,函数是程序的集合和抽象. 用文件形式组织和表达数据更有效也更加灵活. 文件包括两种形式,文本文件和二进制文件. 文本文件:一般由单一特定的编码的字符组成 二进制文件:一般由0和比特1组成,没有统一的字符编码. 无论是通过文本还是二进制创建的文件,都可以用两种方式来打开. 我们来举个例子对比文本文件和二进制文件, 首先我们在桌面创建一个文本文件,取名example,并写入“我爱我的祖国” 如下所示:

编译Python文件

编译Python文件 一.编译Python文件 为了提高加载模块的速度,强调强调强调:提高的是加载速度而绝非运行速度.python解释器会在__pycache__目录中下缓存每个模块编译后的版本,格式为:module.version.pyc.通常会包含python的版本号.例如,在CPython3.3版本下,spam.py模块会被缓存成__pycache__/spam.cpython-33.pyc.这种命名规范保证了编译后的结果多版本共存. Python检查源文件的修改时间与编译的版本进行对比,

44.编译Python文件

目录 一. 编译Python文件 二. 批量生成.pyc文件 一. 编译Python文件 为了提高加载模块的速度,强调强调强调:提高的是加载速度而绝非运行速度.python解释器会在__pycache__目录中下缓存每个模块编译后的版本,格式为:module.version.pyc.通常会包含python的版本号.例如,在CPython3.3版本下,spam.py模块会被缓存成__pycache__/spam.cpython-33.pyc.这种命名规范保证了编译后的结果多版本共存. Python

如何编写一个带命令行参数的Python文件

看到别人执行一个支持命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持命令行参数. 首先你要知道python中的sys模块的一些功能: import sys print "the number of python program's argument:",len(sys.argv) print "the value of every argument

Python文件类型

Python的文件类型分为三种:源代码.字节代码.优化代码. 1. 源代码    Python源代码文件,即py脚本文件,由 python.exe 解释,可在控制台下运行.pyw脚本文件是图形用户接口(Graphical user interface)的源文件,专门用来开发图形界面,由 pythonw.exe 解释运行. 2. 字节代码    Python源文件经过编译后生成的pyc文件,即字节文件.它与平台无关,所以可以移植到其他系统上.下面这段脚本可以把 example.py 编译为 exa

C#调用python文件执行

我的电脑环境是使用.net framework4.5.1,如果在调试过程中调不通请注意 我用的是Visual studion 2017,python组件下载地址:http://ironpython.codeplex.com/releases/view/ 下载的版本是2.7,下载安装完之后记得引入安装路径下的以下三个dll (1)首先先说一个简单的功能,在c#代码中执行python字符串,内容如下: (2)c#调用python文件: 在当前目录下新建一个后缀名为py的文件,文件名为AmoutDis

python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典

python学习笔记2--python文件类型.变量.数值.字符串.元组.列表.字典 一.Python文件类型 1.源代码 python源代码文件以.py为扩展名,由pyton程序解释,不需要编译 [[email protected] day01]# vim 1.py #!/usr/bin/python        print 'hello world!' [[email protected] day01]# python 1.py hello world! 2.字节代码 Python源码文件