精华内容
下载资源
问答
  • 网上有很多讨论如何实现文件的自我更新的文章,都知道比较两个文件的版本,但关键是如何处理文件如何销毁自己就麻烦了.作者采用编写批处理文件的方式实现了该功能.与大家共享 关键字:FileVersion
  • java 实现两excel(或csv)文件比对(以某几列作为键值,比对指定列的值差异)
  • 摘要:VB源码,文件操作,文件属性 获取文件属性的VB小例子源代码,貌似发了不少这样的小程序,不过每一个都出自不同的作者,其编程思路和实现方法在源代码方面有不同的表现,在功能方向虽然这一款已经有些重复了,...
  • c#程序实现文件刻录光盘源代码

    千次阅读 2013-10-23 10:10:16
    使用IMAPI2,进行文件的光盘刻录,具体实例可以参照以下链接: C#实现方式: Burning and Erasing CD/DVD Media with C# and IMAPI2 地址:...

    使用IMAPI2,进行文件的光盘刻录,具体实例可以参照以下链接:

    C#实现方式:

    Burning and Erasing CD/DVD Media with C# and IMAPI2

    地址:http://www.codeproject.com/Articles/24544/Burning-and-Erasing-CD-DVD-Blu-ray-Media-with-C-an

    C++实现方式:

    Burning CD/DVD Media with the Image Mastering API Version 2.0 (IMAPI2)

    地址:http://www.codeproject.com/Articles/22538/Burning-CD-DVD-Media-with-the-Image-Mastering-API

     

    扩展其他资源:

    Creating Audio CDs using IMAPI2

    地址:http://www.codeproject.com/Articles/25241/Creating-Audio-CDs-using-IMAPI2

    此资源,可以提供IMAPI2.Interop文件,解决“

    碰到一个比较难弄的问题,如果在引用里面直接加上 IMAPI2.dll 和 IMAPI2FSS.dll 的话,最后会导致IMAPI2FS.FsiStreamClass转换到IMAPI2.IStream转不过去。

    ”问题。

    Demo:http://files.cnblogs.com/unforget/BurnCD.rar

    展开全文
  • 源代码设计、实现源代码控制

    千次阅读 2018-04-26 19:54:31
    通过运用GitHub网站进行源代码的上传、签入、复审、合并,大致掌握了基本操作。首先,在最初的源代码上传过程中,我们选择了运用eclipse安装所需插件,然后生成git repositories并直接依靠eclipse上传项目到GitHub中...

    通过运用GitHub网站进行源代码的上传、签入、复审、合并,大致掌握了基本操作。

    首先,在最初的源代码上传过程中,我们选择了运用eclipse安装所需插件,然后生成git repositories并直接依靠eclipse上传项目到GitHub中我们的团队仓库里。最初文件无法上传成功,然后我们尝试在eclipse中生成了SSH2RSA key并添加到GitHub账号的SSH keys中,然后再通过commitpush操作把项目提交到GitHub的仓库里,最终成功实现了项目源代码的上传。同时,GitHub团队仓库中的代码也可以使用pull操作直接同步到eclipse中,在本地查看、修改代码。

     


    在代码的修改签入过程中,我的队友不小心把修改过的文件直接覆盖到了master分支上,导致原来的源代码被删除,只剩下了修改后的代码。经过分析与尝试,我们在上传修改文件的时候添加了一个新的test测试分支,将修改后的代码上传到test分支中。


    GitHub中可以进行test分支的修改部分代码与未修改的源代码的比对,清晰具体的查看修改了哪些代码,同时还可以检查该代码在合并过程中是否会产生代码冲突。


    当我把文件签出后修改时,队友更新了该文件,在我修改完代码后签入代码时显示代码冲突,无法自动合并,因此尝试手动消除冲突。



    再次测试,当签入文件时没有发生代码冲突,则可以自动合并代码。


    同时,GitHub中还提供了历史修改记录的查询,可以更方便的查阅代码具体修改的内容、具体时间以及修改人,从而寻找出容易冲突的问题。

     

    展开全文
  • 文本比对源代码-LCS

    2010-04-14 16:48:33
    借助LCS算法实现文本文档比对,可以自行扩展支持word等格式文件
  • 贪食蛇源码及jar文件,程序比较简单易懂,适合初学者使用
  • 各种排序算法效率分析比较源代码 C语言实现 各种排序包括: 直接插入排序,折半插入排序,2—路插入排序和表插入排序;希尔排序和链式基数排序;起泡排序,快速排序,归并排序;简单选择排序,树形选择排序和堆...
  • python源代码文件加密

    千次阅读 2019-08-21 12:53:40
    pyc文件是py文件经过编译后生成的二进制文件,因此可以发布pyc文件以隐藏源代码。pyc文件拥有更快的加载速度,执行速度没有区别。pyc是一种跨平台的字节码,pyc的内容是跟python的版本相关的,不同版本编译后的pyc...

    由于python设计的初衷是开源的,因此py文件是可以直接看到源码的。但开发商业软件,代码加密保护就比较重要了。

    python编译后程序

    pyc文件是py文件经过编译后生成的二进制文件,因此可以发布pyc文件以隐藏源代码。pyc文件拥有更快的加载速度,执行速度没有区别。pyc是一种跨平台的字节码,pyc的内容是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的python是无法执行的。
    python提供了内置的类库来实现把py文件编译为pyc文件,这个模块就是py_compile模块:
    生成单个pyc文件
    python -m py_compile test.py
    python -O -m py_compile test.py
    -O 优化成字节码(pyo)
    -m 表示把后面的模块当成脚本运行
    -OO 表示优化的同时删除文档字符串
    批量生成pyc文件
    python -m compileall

    对服务器脚本敏感信息加密的程序,就可以使用这种方式生成pyc文件,提高一层保护的功能,当然反编译在很大程度上还是能还原回来的:

    #对程序进行编译
    [root@localhost encrypt]# python -m py_compile optcrypt.py
    [root@localhost encrypt]# python -m py_compile server.py 
    [root@localhost encrypt]# python -m py_compile __init__.py
    #生成文件
    [root@localhost encryptc]# ls
    global.properties  __init__.pyc  optcrypt.pyc  server.pyc  test.sh
    

    程序加密

    目前软件开发商对 Python 加密时可能会有两种形式,一种是对python转成的exe进行保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程。

    1.pyexe、PyInstaller、py2app 打包软件

    这些工具用于将一个Python项目打包成单个可执行的文件,对 python转exe加壳,方便(在没有Python环境的机器上)使用。但通过压缩包可以方便地得到所有pyc文件或源文件,与C/C++编译生成的可执行文件有本质上的区别,基本上是零保护。

    2.对.py/.pyc加密

    第一步,使用加壳工具对 python 安装目录下的 python.exe 进行加壳,将 python.exe 拖入到加壳工具 VirboxProtector 中,配置后直接点击加壳。
    第二步,对.py/.pyc 进行加密,使用 DSProtector 对.py/.pyc 进行保护。

    3.使用cython保护python的代码(推荐)

    先安装cython
    pip install cython
    有些系统要求Cython大写
    pip install Cython

    No package cython available.

    • Maybe you meant: Cython

    然后安装python开发包
    centos系统下
    yum install python-devel
    然后对python代码文件进行转换:
    cython hello.py --embed #把python代码转换成c代码
    会生成一个名为hello.c的c语言的源文件。
    然后使用gcc编译成二进制可执行文件,这时候需要制定头文件、编译选项、链接选项:(macOS下测试通过)

    gcc `python-config --cflags` `python-config --ldflags`  hello.c -o hello
    

    注:使用`符号,而不是单引号’。

    如果python版本较高的话可以使用

    gcc `python3-config --cflags --ldflags` hello.c -o hello
    

    这样代码就被编译成二进制的可执行程序了。
    链接错误的话试试:(centOS下测试通过,如果hello.c -o hello放在最后则centOS编译会报错)

    gcc `python-config --cflags` -o hello hello.c  `python-config --ldflags`
    

    4. 加密.py文件为.so文件

    4.1 安装 cython, python-devel, gcc
    4.2 新建一个setup.py,内容是:
    from distutils.core import setup
    from Cython.Build import cythonize
    setup(ext_modules = cythonize(["helloworld.py"]))
    

    其中helloworld.py是需要加密的文件。setup.pyhelloworld.py放在相同文件夹。

    4.3 运行setup.py脚本
    python setup.py build_ext --inplace
    

    其中build_ext代表外部模块,--inplace参数则表示在当前目录生成文件。

    4.4 运行脚本后,在当前文件夹会生成helloworld.so文件

    然后直接导入helloworld这个模块即可。如果你定义了类,可能还会遇到和__init____call__相关的错误。解决办法就具体问题具体分析了。

    Note:Windows下会生成.pyd文件,而非.so文件

    4.5 另外一种编译方法(未测试)
    cython helloworld.py
    gcc -c -fPIC -I/usr/include/python2.7/ helloworld.c
    gcc -shared helloworld.o -o helloworld.so
    

    Note: 编译后的文件与平台和python版本相关性比较高,我的做法是使用docker来进行部署。

    参考文献:

    1. python源代码文件加密 - 简书
    2. python文件编译成so介绍 - 1.使用cython将py文件编译成so文件 - linyonghui1213的专栏 - CSDN博客
    3. Cython编译python为so 代码加密 - 经验集锦 - CSDN博客
    4. Python编译成.so文件进行加密后调用 - weixin_44216589的博客 - CSDN博客
    5. python将py编译成so方法 - 牧飞 - CSDN博客
    6. python 源代码保护 之 xx.py -> xx.so - TonyZhang24 - 博客园
    展开全文
  • python实现Excel文件读取的程序   最近帮一个朋友用python写了一个读Excel程序操作的程序,具体要求为:读取两个Excel文件,根据其中某个特征的特征值对这两个文件进行取交集操作,生成三个Excel文件,第一个Excel...

    python实现Excel文件读取的程序

      前一段时间帮一个朋友用python写了一个读Excel程序操作的程序,具体要求为:读取两个Excel文件,根据其中某个特征的特征值对这两个文件进行取交集操作,生成三个Excel文件,第一个Excel文件为这两个文件的公共集,第二个Excel文件为第一个Excel文件除去公共项后的Excel文件,第三个Excel文件为第二个Excel文件除去公共项后的Excel文件。
      最近在做一个销售价格预测的项目,数据量也是百万级别,在做这个项目的过程中又重新认识了一下python中大数据处理神器pandas模块,发现pandas对于表格类数据的处理效率非常高(以前对于pandas的理解只是停留在是一个模块包,和array、list、directory类型类似只是多了一些方法,所以不以为然,现在发现他对于表格处理内含的函数真的很多和很强大,对于大量数据的处理效率真的很高,特别适合数据挖掘领域中的特征处理),于是乎想着将这个Excel文件处理程序用pandas模块进行改进,结果效果和预期一样,之前用xlrd和xlsxwriter模块写的程序拿一个数据量30w+和一个数据量50w+的两张表格做测试耗时两个小时多(后文有介绍),现在换成pandas模块时间仅用不到五分钟(不可思议),主要耗时在与文件读取和写入,主要处理思想如下:
      (1)将两表内要比较的列导出来并转换为set类型
      (2)对两个set集合取交集,然后转换为list类型
      (3)用pandas内置的方法将两表交集内的行找出来,并导入一张新表内。
      (4)依次求出两表和其交集的差集,并导入到新表内。
      总结:对于大量数据的处理,pandas就是一款神器,其功能强大,效率比自己写的for循环要高很多。
    程序实现如下点击下载

    打包成单个可执行文件命令:installer -F MainInterface.py -p ExcelDealFunc.py --hidden-import ExcelDealFunc.py

    # -*- coding: utf-8 -*-
    
    import pandas as pd
    import time
    
    def exceldealfunc(filename1,filename2,filename3,filename4,filename5,str1,str2):
        """
            函数名:exceldealfunc(filename1,filename2,filename3,filename4,filename5,num1,num2)
            函数功能:执行表1表2取公共部分,并生成公共集表3,表1的去除公共集的表4,表2的去除公共集的表5
                输入	1: filename1:读取表1的文件路径
                输入	1: filename2:读取表2的文件路径
                输入	1: filename3:写入表3的文件路径
                输入	1: filename4:写入表4的文件路径
                输入	1: filename5:写入表5的文件路径
                输入	2: str1:表1要比较的列号名
                输入	2: str2:表2要比较的列号名
                输出	1: 无
            其他说明:无
        """
        start=time.time()
    
        table1=pd.read_excel(filename1)     # 读取表1
        print("Time:%d s,Read Table1 Successful!"%(time.time()-start))
        table2=pd.read_excel(filename2)     # 读取表2
        print("Time:%d s,Read Table2 Successful!"%(time.time()-start))
        print()
    
        set1=set(table1[str1])              # 将表1要比较的列转换为集合格式(集合1)
        print("Time:%d s,File1 turn into a set Successful!"%(time.time()-start))
        set2=set(table2[str2])              # 将表2要比较的列转换为集合格式(集合2)
        print("Time:%d s,File2 turn into a set Successful!"%(time.time()-start))
        print()
    
        set3=set1 & set2                    # 取集合1和集合2的交集set3
        print("Time:%d s,set3 = set1 & set2 Successful!"%(time.time()-start))
        list3=list(set3)                    # 将set3转换为列表的格式
        print("Time:%d s,set3 turn to a list Successful!"%(time.time()-start))
        table1[table1[str1].isin(list3)].to_excel(filename3,index=False,)   # 将交集保存到表3
        print("Time:%d s,Write to Table3 Successful!"%(time.time()-start))
        print()
    
        list4=list(set1 - set3)             # 取集合1和交集的差集,并转换为列表格式
        print("Time:%d s,(set1 - set3) turn to a list Successful!"%(time.time()-start))
        table1[table1[str1].isin(list4)].to_excel(filename4,index=False,)   # 将差集1保存到表4
        print("Time:%d s,Write to Table4 Successful!"%(time.time()-start))
        print()
    
        list5=list(set2 - set3)             # 取集合2和交集的差集,并转换为列表格式
        print("Time:%d s,(set2 - set3) turn to a list Successful!"%(time.time()-start))
        table2[table2[str2].isin(list5)].to_excel(filename5,index=False,)   # 将差集2保存到表5
        print("Time:%d s,Write to Table5 Successful!"%(time.time()-start))
        print()
    
        print("All task finish! Using Time:%d s."%(time.time()-start))
    
    
    *********分割线 以下是改进前采用xlrd和xlsxwriter模块对Excel文件进行处理,这里仅供参考*********

      由于朋友所需要处理的数据量比较大,给我的是一个30w的数据集和一个50w的数据集小样本,这里记录一下我碰到的两个坑:
      (1)xlwt模块保存的文件格式是xls,最多只能够写入65535行列256列,如果行数或列数过多就会报错。解决方法有两种,第一种是继续使用该模块,每65535行后或者256列后就新建一张sheet,将超过的数据保存到新sheet中;第二种方法是使用xlsxwriter模块,xlsxwriter模块保存的文件格式是xlsx,能够最多写入1048576行65535列,如果数据量还是过大只能用在该基础上再用第一种方法了。笔者用的是第二种。
      (2)python列表中对列表直接操作速度会明显快于对列表索引操作,所以变成实现时尽量多用python内置列表操作(如a in list或者list=list1&list2等等),笔者一开始为了变成方便在其中用了列表索引操作,结果从晚上6点半运行到晚上11半都没出结果,第二天早上来实验室才发现运行完毕,将代码中对列表索引操作改成了对list操作后再次运行,结果只运行了两个小时。

      程序界面说明:(后文附源码与GitHub链接)
    在这里插入图片描述
      这款软件只要选好两个Excel文件,以及对应要比较的列号(从0开始计数),然后设定好要存放生成的Excel文件地址与文件名然后直接点击开始就可以了。
      重置按钮只是在运行完一次后激活开始按钮的作用。
    笔者电脑配置如下:
    在这里插入图片描述
      测试了数据量分别为50w+和30w+的两张表,用时是2个小时左右。

      下面直接pose出源代码:
    GitHub下载地址:MyGitHub链接
    文件1:GUI窗口

    # -*- coding: utf-8 -*-
    from tkinter import *
    from tkinter.filedialog import askdirectory
    from tkinter.filedialog import askopenfilename
    from ExcelDealFunc import exceldealfunc
    import os
    
    class MyMainFace(object):
        """主界面类"""
        def __init__(self):
            """
                函数名:__init__(self)
                函数功能:MyMainFace类的构造函数,界面组件均在此构造出的
                    输入	1: MyMainFace类的对象,自身,无需输入
                    输出	1: 无
                其他说明:无
            """
            self.root = Tk()
            self.root.title('Excel处理程序')
    
            # 请选择目标路径
            Label(self.root,text = "请选择目标路径:",fg="red").grid(row = 0, column = 0,sticky="w")
    
            Label(self.root,text = "表1目标路径:").grid(row = 1, column = 0,sticky="e")
            self.path1 = StringVar()
            Entry(self.root, width=60,textvariable = self.path1,state='readonly').grid(row = 1, column = 1,columnspan=3)
            Button(self.root, text = "路径选择", command = self.selectPath1).grid(row = 1, column = 4)
            self.num1 = StringVar()
            Label(self.root,text = "  比较字段的ID").grid(row = 1, column = 5,sticky="e")
            Entry(self.root, width=5,textvariable = self.num1).grid(row = 1, column = 6)
    
            Label(self.root,text = "表2目标路径:").grid(row = 2, column = 0,sticky="e")
            self.path2 = StringVar()
            Entry(self.root,width=60,textvariable = self.path2,state='readonly').grid(row = 2, column = 1,columnspan=3)
            Button(self.root, text = "路径选择", command = self.selectPath2).grid(row = 2, column = 4)
            self.num2 = StringVar()
            Label(self.root,text = "  比较字段的ID").grid(row = 2, column = 5,sticky="e")
            Entry(self.root, width=5,textvariable = self.num2).grid(row = 2, column = 6)
    
            # 请选择生成表格路径
            Label(self.root,text = "请选择生成表格路径:",fg="red").grid(row = 4, column = 0,sticky="w")
    
            Label(self.root,text = "表格存放路径:").grid(row = 5, column = 0,sticky="e")
            self.path3 = StringVar()
            Entry(self.root,width=60,textvariable = self.path3,state='readonly').grid(row = 5, column = 1,columnspan=3)
            Button(self.root, text = "路径选择", command = self.selectPath3).grid(row = 5, column = 4)
    
            # 请输入生成表格名称
            Label(self.root,text = "请输入生成表格名称:",fg="red").grid(row = 6, column = 0,sticky="w")
    
            Label(self.root,text = "表1表2的交集表的表名:").grid(row = 7, column = 0,sticky="e")
            self.name1 = StringVar()
            Entry(self.root, textvariable = self.name1).grid(row = 7, column = 1,sticky="w")
    
            Label(self.root,text = "表1去除交集后的表名:").grid(row = 8, column = 0,sticky="e")
            self.name2 = StringVar()
            Entry(self.root, textvariable = self.name2).grid(row = 8, column = 1,sticky="w")
    
            Label(self.root,text = "表2去除交集后的表名:").grid(row = 9, column = 0,sticky="e")
            self.name3 = StringVar()
            Entry(self.root, textvariable = self.name3).grid(row = 9, column = 1,sticky="w")
    
            self.labeltxt=StringVar()
            self.labeltxt.set(" ")
            Label(self.root,textvariable = self.labeltxt,fg="red").grid(row = 7, column = 3)
            Label(self.root,text = "以表1为参考",fg="red").grid(row = 7, column = 2)
    
            self.var = StringVar()
            self.var.set("开始")
            self.button =  Button(self.root,textvariable = self.var,command = self.start, width = 5)
            self.button.grid(row = 8,column = 2,padx = 5)
    
            self.var2 = StringVar()
            self.var2.set("重置")
            self.button2 =  Button(self.root,textvariable = self.var2,command = self.reset, width = 5)
            self.button2.grid(row = 9,column = 3,padx = 5)
    
            # 创建一个背景色为白色的矩形
            self.canvas = Canvas(self.root,width = 170,height = 26,bg = "white")
            # 创建一个矩形外边框(距离左边,距离顶部,矩形宽度,矩形高度),线型宽度,颜色
            self.out_line = self.canvas.create_rectangle(2,2,180,27,width = 1,outline = "black") 
            self.canvas.grid(row = 8,column = 3,ipadx = 5)
    
            self.root.mainloop()
    
        def start(self):
            """
                函数名:start(self)
                函数功能:开始按钮的功能函数
                    输入	1: MyMainFace类的对象,自身
                    输出	1: 无
                其他说明:无
            """
            if self.path1.get():
                filename1=self.path1.get()
            else:
                self.labeltxt.set("请选择好表1")
                return
    
            if self.path2.get():
                filename2=self.path2.get()
            else:
                self.labeltxt.set("请选择好表2")
                return
    
            if self.path3.get():
                filename=self.path3.get()
            else:
                filename="data"
            
            if self.name1.get():
                filename3=filename+"/"+self.name1.get()+".xlsx"
            else:
                filename3=filename+"/Table1_Table2.xlsx"
    
            if self.name2.get():
                filename4=filename+"/"+self.name2.get()+".xlsx"
            else:
                filename4=filename+"/Table1_del.xlsx"
    
            if self.name3.get():
                filename5=filename+"/"+self.name3.get()+".xlsx"
            else:
                filename5=filename+"/Table2_del.xlsx"
    
            if self.num1.get():
                num1=int(self.num1.get())
            else:
                self.labeltxt.set("请选择好num1")
                return
    
            if self.num2.get():
                num2=int(self.num2.get())
            else:
                self.labeltxt.set("请选择好num2")
                return
    
            self.button.config(state="disable") # 关闭按钮1功能
            self.root.withdraw()
            os.system('cls')
            print("正在运行中请稍等...")
            exceldealfunc(filename1,filename2,filename3,filename4,filename5,num1,num2)
            self.root.deiconify()
            self.labeltxt.set("Finally")
    
        def scheduleshow(self,i):
            fill_line = self.canvas.create_rectangle(2,2,0,27,width = 0,fill = "blue") 
            self.canvas.coords(fill_line, (0, 0, 180*i, 30))
            self.var.set(str(round(100*i,1))+"%")
            self.root.update()
    
        def reset(self):
            """
                函数名:reset(self)
                函数功能:重置按钮的功能函数
                    输入	1: MyMainFace类的对象,自身
                    输出	1: 无
                其他说明:无
            """
            self.button.config(state="active") # 激活按钮1
    
            fill_line = self.canvas.create_rectangle(2,2,0,27,width = 0,fill = "white") 
            self.var.set("开始")
            self.labeltxt.set(" ")
            self.canvas.coords(fill_line, (0, 0, 181, 30))
            self.root.update()
    
        def selectPath1(self):
            """
                函数名:selectPath1(self)
                函数功能:选择路径1按钮的功能函数
                    输入	1: MyMainFace类的对象,自身
                    输出	1: 无
                其他说明:无
            """
            path_ = askopenfilename(filetypes = [('Excel', '*.xls*')])
            self.path1.set(path_)
    
        def selectPath2(self):
            """
                函数名:selectPath2(self)
                函数功能:选择路径2按钮的功能函数
                    输入	1: MyMainFace类的对象,自身
                    输出	1: 无
                其他说明:无
            """
            path_ = askopenfilename(filetypes = [('Excel', '*.xls*')])
            self.path2.set(path_)
    
        def selectPath3(self):
            """
                函数名:selectPath3(self)
                函数功能:选择路径3按钮的功能函数
                    输入	1: MyMainFace类的对象,自身
                    输出	1: 无
                其他说明:无
            """
            path_ = askdirectory()
            self.path3.set(path_)
    
    ##############################程序入口#########################################
    if __name__=="__main__":
        MyMainFace()
    
    

    文件2:Excel文件处理模块

    # -*- coding: utf-8 -*-
    import xlrd,xlsxwriter
    import sys
    
    def writeoneline(table_from,table_to,line,nrows):
        """
            函数名:writeoneline(table_from,table_to,line,nrows)
            函数功能:读取table_from的第line行数据写入到table_to的第nrows行
                输入1: table_from:从该表内读取要写入的数据
                输入2: table_to:向该表内添加一行数据
                输入3: line:table_from内要读取数据的行数
                输入4: nrows:table_to内要写入数据的行数
                输出1: 无
            其他说明:无
        """
        write_data=table_from.row_values(line)
        for i in range(len(write_data)):
            table_to.write(nrows,i,write_data[i])
    
    def readdata(filename,num):
        """
            函数名:readdata(filename,num)
            函数功能:通过文件路径,打开Excel文件,读取sheet
                输入	1: filename:读取表的文件路径
                输入	2: num:要比较的列号
                输出	1: table:sheet表信息
                输出	2: nrows:该Excel表的行数
                输出	3: count:count要比较列的数据列表
            其他说明:无
        """
        data = xlrd.open_workbook(filename)
        table = data.sheets()[0]
        nrows = table.nrows
        count=table.col_values(num)
    
        return table,nrows,count
    
    def exceldealfunc(filename1,filename2,filename3,filename4,filename5,num1,num2):
        """
            函数名:exceldealfunc(filename1,filename2,filename3,filename4,filename5,num1,num2)
            函数功能:执行表1表2取公共部分,并生成公共集表3,表1的去除公共集的表4,表2的去除公共集的表5
                输入	1: filename1:读取表1的文件路径
                输入	1: filename2:读取表2的文件路径
                输入	1: filename3:写入表3的文件路径
                输入	1: filename4:写入表4的文件路径
                输入	1: filename5:写入表5的文件路径
                输入	2: num1:表1要比较的列号
                输入	2: num2:表2要比较的列号
                输出	1: 无
            其他说明:无
        """
        table1,nrows1,count1=readdata(filename1,num1)
        print("Read Table1 Successful!")
        table2,nrows2,count2=readdata(filename2,num2)
        print("Read Table2 Successful!")
    
        data3 = xlsxwriter.Workbook(filename3)    # 共同用户样本
        table3 = data3.add_worksheet()
    
        data4 = xlsxwriter.Workbook(filename4)    # Table1处理后的样本Table4
        table4 = data4.add_worksheet()
    
        data5 = xlsxwriter.Workbook(filename5)    # Table2处理后的样本Table5
        table5 = data5.add_worksheet()
    
        writeoneline(table2,table3,0,0)
        writeoneline(table1,table4,0,0)
        writeoneline(table2,table5,0,0)
        nrows3=1
        nrows4=1
        nrows5=1
    
        for i in range(1,nrows1):
            if count1[i]  in count2:
                writeoneline(table1,table3,i,nrows3)                # Table1写入共同用户样本Table3
                nrows3+=1
            else:
                writeoneline(table1,table4,i,nrows4)                # Table1写入处理后的样本Table4
                nrows4+=1
            if i%10000==0:
                done=i/(nrows1+nrows2)
                sys.stdout.write("\r[%s%s] %d%%" % ('█'*int(40*done),'  '*(40-int(40*done)),int(100*done)))
                sys.stdout.flush()
        data3.close()
        print("Write to Table3 Successful!")
        data4.close()
        print("Write to Table4 Successful!")
    
        done=nrows2/(nrows1+nrows2)
        sys.stdout.write("\r[%s%s] %d%%" % ('█'*int(40*done),'  '*(40-int(40*done)),int(100*done)))
        sys.stdout.flush()
    
        for i in range(1,nrows2):
            if count2[i] not in count1:
                writeoneline(table2,table5,i,nrows5)                # table2写入处理后的样本Table5
                nrows5+=1
            if i%10000==0:
                done=(i+nrows2)/(nrows1+nrows2)
                sys.stdout.write("\r[%s%s] %d%%" % ('█'*int(40*done),'  '*(40-int(40*done)),int(100*done)))
                sys.stdout.flush()
        data5.close()
        print("Write to Table5 Successful!")
    
    展开全文
  • C++实现推箱子,功能比较齐全,第一个控制台游戏,还有很多不足请多多包涵。
  • 源代码比对解决方案 文章目录源代码比对解决方案背景方案简介Beyond Compare功能与...将需要比较的jar或者源代码或其它文件放入两个文件夹中, 通过Beyond Compare一次性比较两个文件夹中的全部内容. 通过Beyond comp
  • libevent源代码文件组织

    千次阅读 2013-12-16 19:06:07
    ——libevent源代码文件组织 1 前言 详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的。本节内容不多,我想并不是说它不重要! 2 源代码组织结构 Libevent...
  • 用c实现的一些比较常见的文件操作,写成了函数,可以直接调用:文件的读,文件的写,文件夹的复制,创建,删除,子文件的统计等
  • 内容索引:VC/C++源码,加密解密,RSA,加密,毕业论文...Open SSL是一个开放源代码实现了SSL及相关加密技术的软件包,由加拿大的Eric Yang等发起编写的。  本压缩包内含RSA的论文以及相关源代码源代码运行于VS2003。
  • VC++ 毕业论文:RSA文件加密原理及代码实现 RSA在软件方面的应用,主要集中在Internet上。加密连接、数字签名和数字证书的核心算法广泛使用RSA。日常应用中,有比较著名的工具包Open SSL(SSL,Security Socket Layer...
  • SourceCmpUtil.zip 用C#实现的文件夹比较的工具,支持扩展名过滤,包含源代码
  • 对于网络编程来说,ping是比较基础的,这是一个它的实现c++文件,希望对初学网络编程的带来用处。
  • MFC编写的,实现了批量修改bmp图像文件名称,通过简单修改源代码可以轻松的实现其他文件格式的修改,程序比较简单。
  • maven如何实现创建带源代码的jar包

    千次阅读 2016-08-15 17:11:18
    实现目标maven打包,在生成的jar包中带有源代码
  • 让 .Net 程序 脱离 .net framework框架 运行(源代码实现说明) 前面介绍了 “让 .Net 程序 脱离 .net framework框架 运行的方法”, 该方法主要是利用了Fetion的框架来实现的, 今天我们要介绍的是不...
  • 面对视频直播源代码数据日益需求量增加的时代,本地数据存储在便利性和数据访问实时性上已经面对着巨大的考验,因此,各大互联网运营商纷纷推出了云存储,方便了数据管理和迁移,可以实现数据共享等优点。...
  • 企业源代码该进行保护,软件公司源代码该如何管理,怎样才能防止重要核心信息的泄密呢
  • 收集了几个对MP3文件格式说明比较详细的网页,并附带上JAVA版本的源代码.可实现每次读取一帧数据.
  • C# SerialPort控件实现串口通信源代码

    热门讨论 2013-05-05 13:40:16
    用C#写的串口通信程序,用到SerialPort 控件,程序比较简单,适合初学者看, 压缩包中是整个项目文件,可以直接打开用(VS2010及以上版本)
  • vc.NET实现用手势控制音乐播放器的源代码,针对酷狗音乐播放器,现在的一些智能手机上用手势控制的比较多。 控制台应用程序:KuGouController 项目概述 应用程序向导已为您创建了此 KuGouController 应用程序。 ...
  • 文件为c++源代码比较两个集合的大小,若集合的长度不等就退出,集合元素值累加相等则相等,供各位参考!
  • maven实现打包带源代码的jar包

    万次阅读 2017-05-09 10:19:57
    maven实现打包带源代码的jar包
  • 下面我们详细了解Java前端编译:Java源代码编译成Class文件的过程;我们从官方JDK提供的前端编译器javac入手,用javac编译一些测试程序,调试跟踪javac源码,看看javac整个编译过程是如何实现的。 javac编译器 javac...
  • Java 运行时动态编译源代码原理和实现

    万次阅读 多人点赞 2017-03-02 23:08:37
    编译,一般来说就是将源代码转换成机器码的过程,比如在C语言中中,将C语言源代码编译成a.out,,但是在Java中的理解可能有点不同,编译指的是将java 源代码转换成class字节码的过程,而不是真正的机器码,这是因为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 507,889
精华内容 203,155
关键字:

文件比对源代码实现