#! encoding=utf-8

import os
import os.path AllFiles = {}
MinSize = 8100 def OneDir( DirName ):
if DirName[len(DirName)-1] <> "\\":
DirName = DirName + "\\"
tmpFiles = os.listdir( DirName )
for OneFile in tmpFiles:
OneFilePath = DirName + OneFile
if os.path.isdir( DirName + OneFile ):
OneDir( DirName + OneFile + "\\")
else:
statinfo = os.stat( OneFilePath )
if AllFiles.has_key( statinfo.st_size ):
OneKey = AllFiles[ statinfo.st_size ]
OneKey.append( OneFilePath )
AllFiles[ statinfo.st_size ] = OneKey
else:
if statinfo.st_size > MinSize:
# print statinfo.st_size
FileSize = statinfo.st_size
AllFiles[ FileSize ] = [ OneFilePath ]
# print AllFiles
# print AllFiles.keys() import logging # 创建一个logger
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG) # 创建一个handler,用于写入日志文件
fh = logging.FileHandler('test.log')
fh.setLevel(logging.DEBUG) # 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG) # 定义handler的输出格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter) # 给logger加入handler
logger.addHandler(fh)
logger.addHandler(ch) # 记录一条日志
#logger.info('foorbar')
#该代码片段来自于: http://www.sharejs.com/codes/python/6248
import pythoncom
from win32com.shell import shell
from win32com.shell import shellcon
def MakeShortcut( lnkname, filename ):
logger.info(lnkname +' is linked to '+filename)
os.remove( lnkname )
shortcut = pythoncom.CoCreateInstance(
shell.CLSID_ShellLink, None,
pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink)
shortcut.SetPath(filename)
# shortcut.SetIconLocation(iconname,0)#可有可无,没有就默认使用文件本身的图标
# if os.path.splitext(lnkname)[-1] != '.lnk':
lnkname += ".lnk"
shortcut.QueryInterface(pythoncom.IID_IPersistFile).Save(lnkname,0) import filecmp
def FileCompare( SameSizeFiles ):
CompareResult = [[]]*len(SameSizeFiles)
for i in range( 1, len(SameSizeFiles) ):
for j in range( i ):
if filecmp.cmp(SameSizeFiles[i],SameSizeFiles[j]):
if len( CompareResult[ j ] ) > 1:
CompareResult[ j ].append( i )
else:
CompareResult[ j ] = [ i, j ]
break
for i in range( len(SameSizeFiles)-1 ):
if len( CompareResult[ i ] ) > 1:
for j in range( len( CompareResult[ i ] )-1 ):
MakeShortcut( SameSizeFiles[ CompareResult[ i ][j]],
SameSizeFiles[ CompareResult[i][ len( CompareResult[ i ] )-1 ] ] ) ############## start #############
DirList = []
while cmp(input,"#")<>0:
input = raw_input("please input folder names, \"#\" to finish input:")
DirList.append(input)
# print DirList
DirList.pop() for Dir in DirList:
OneDir( Dir ) print AllFiles.keys()
for EachSize in AllFiles.keys():
if (len( AllFiles[EachSize] ) > 1) & ( EachSize > MinSize ):
FileCompare( AllFiles[EachSize] )

singlefile.py的更多相关文章

  1. python调用py中rar的路径问题。

    1.python调用py,在py中的os.getcwd()获取的不是py的路径,可以通过os.path.split(os.path.realpath(__file__))[0]来获取py的路径. 2. ...

  2. Python导入其他文件中的.py文件 即模块

    import sys sys.path.append("路径") import .py文件

  3. import renumber.py in pymol

    cp renumber.py /usr/local/lib/python2.7/dist-packages/pymol import renumber or run /path/to/renumber ...

  4. python gettitle.py

    #!/usr/bin/env python # coding=utf-8 import threading import requests import Queue import sys import ...

  5. 解决 odoo.py: error: option --addons-path: The addons-path 'local-addons/' does not seem to a be a valid Addons Directory!

    情况说明 odoo源文件路径-/odoo-dev/odoo/: 我的模块插件路径 ~/odoo-dev/local-addons/my-module 在my-module中创建了__init__.py ...

  6. caffe机器学习自带图片分类器classify.py实现输出预测结果的概率及caffe的web_demo例子运行实例

    caffe机器学习环境搭建及python接口编译参见我的上一篇博客:机器学习caffe环境搭建--redhat7.1和caffe的python接口编译 1.运行caffe图片分类器python接口 还 ...

  7. 【转】Windows下使用libsvm中的grid.py和easy.py进行参数调优

    libsvm中有进行参数调优的工具grid.py和easy.py可以使用,这些工具可以帮助我们选择更好的参数,减少自己参数选优带来的烦扰. 所需工具:libsvm.gnuplot 本机环境:Windo ...

  8. MySqlNDB使用自带的ndb_setup.py安装集群

    在用Mysql做集群时,使用Mysql的NDB版本更易于集群的扩展,稳定和数据的实时性. 我们可以使用Mysql自带的工具进行集群安装与管理:ndb_setup.py.位于Mysql的安装目录bin下 ...

  9. 将做好的py文件打包成模块,供别人安装调用

    现在要将写完的3个py文件,打包. 步骤: 1.新建一个文件夹setup(名字随便取),在setup文件夹下,再新建一个文件夹financeapi. 2.将上面4个py文件拷贝至financeapi文 ...

随机推荐

  1. Layui数据表单的编辑

    使用layui对单元格进行编辑并保存 先是要引入layui的JS和CSS 然后创建一个表格 而重要的是edit这个属性,只有使用了这个属性的一列数据表格才可以编辑,其余的都不可以进行编辑 然后使用la ...

  2. git学习(3)----git 新建分支并提交本地代码到远程分支

    一.步骤 1.在gitlab上创建一个issue,issue一般来说是版本发布说明.比如本次更新了什么功能,修复了什么bug什么的. 2.然后在本地创建一个branch,或者直接在gitlab上申请m ...

  3. 操作Session存储对象时的一些问题

    前段时间在操作Session存储的对象时,遇到了类似以下的这种情况: User user=new User("张三"); //创建一个姓名为“张三”的User对象 Session[ ...

  4. Effective C++标题整理

    Effective C++ 话说光看这50个tip又有什么用呢?只有实际使用的时候才体现它们的价值才对. 就像只看<代码大全>不能成为一个好程序员,必须结合实际写项目经验才行. 从C转向C ...

  5. springBoot启动及发布

    1.在项目编辑器(IDEA)中启动 运行springBoot项目Application类中main方法,这两个按钮都可以.如下图: 当然还有我们配置的启动按钮,这是最常用的启动方式,不再赘述,如下图: ...

  6. java解析从接口获取的json内容并写到excle(只写与标题匹配的值,并非把所有的接口返回值都写进去)

    需求:从接口中获取的一个json数组中有多个对象,每个对象中的值并非都需要,只需查出标题中的几项对应的值即可.且还需要按某个字段排序后依次写到excel 实现方法如下: package jansonD ...

  7. linux cmp-比较两个文件是否有差异

    推荐:更多Linux 文件查找和比较 命令关注:linux命令大全 cmp命令用来比较两个文件是否有差异.当相互比较的两个文件完全一样时,则该指令不会显示任何信息.若发现有差异,预设会标示出第一个不通 ...

  8. Django DTL模板语法中的循环

    from django.shortcuts import render def index(request): context={ 'books':[ '5年高考3年模拟', '家猪养殖与配种', ' ...

  9. power coefficient calculation -- post processing

    input: unscaled moment of one bladeoutput: power coefficient of a 3-blades wind/tidal turbine matlab ...

  10. Vue.Draggable实现拖拽效果(快速使用)

    1.下载包:npm install vuedraggable 配置:package.json "dependencies": { "element-ui": & ...