用于python的高级复制文件查找程序。没有什么是不可能解决的。

deplicate的Python项目详细描述


请原谅
==


-`异常`
-`classes`
-`functions`

-`description
——


``deplicate``是用
纯python编写的高性能重复文件查找程序,具有低内存影响和多个高级筛选器。

目录,您还可以直接扫描一堆文件。最新版本允许您删除已发现的重复项和/或对其应用自定义操作。

仅限)
-[x]xxhash算法,用于快速识别文件
-[x]文件大小和签名检查,用于快速排除重复项
-[x]扩展文件属性扫描
-[x]多重筛选
-[x]完全错误处理
-[x]Unicode解码
-[x]安全路径遍历循环
-[]ssd检测
-[x]重复数据清除
-[x]支持将数据移动到垃圾桶/回收站
-[x]自定义操作处理超过删除
-[x]**命令行界面**
(https://github.com/deplicate/deplicate cli)
-[x]统一结构化结果
-[x]支持posix fadvise
-[]图形用户界面
(https://github.com/deplicate/deplicate gui)
-[]增量文件块检查
-[]硬链接扫描
-[]重复目录识别
-[]多处理
-[x]完全有文档记录的
-[]pypy支持
-[[删除:exif数据扫描]


没有它的cli
和gui。

cli*(命令行界面)*:
https://github.com/deplicate/deplicate cli。
gui*(图形用户界面)*:
https://github.com/deplicate/deplicate gui。

在系统上安装"deplicate"最简单的方法是` pip
安装方式`,但是,如果需要,可以尝试从
源安装,如"tarball安装"部分所述。

pip install
~~~~~~~~~~

安装最新的
``pip``发行版:下载'get pip.py``并使用
`python解释器``运行它。

键入
``sudo pip install deplicate`。



>如果上述命令失败,请考虑使用选项
`--user`:

::


tarball install
~确保您已经安装了带有
包的"python解释器"``setuptools`**(>;=20.8.1)**。
1。以"zip"或"tar"格式获取源代码的最新tarball。
2。提取下载的存档。
3.从提取的路径,执行命令
``python setup.py install`。

usage
----


duplicate.find('/path')

或者调用函数'purge``如果您还想删除它们:




duplicate.purge('/path')

使用
以下属性:-``dups``重复文件路径的元组。-
``deldups``清除的重复文件的路径元组。‘杜’perrors`
由于错误,未筛选文件路径的元组。-`` scanerrors`
由于错误而未扫描文件的路径元组。-`` delerrors``tuple
由于错误而未清除的文件路径。

**注意:**默认情况下,递归扫描目录路径。

**注意:**默认情况下,不扫描小于**100 kib**或大于
**100 gib**的文件。

**注意:**文件路径是以规范格式返回。

**注意:**重复文件的元组按输入优先级降序排序,文件修改时间和名称长度。


快速启动
~~~~~~~~~~~~~


扫描单个目录中的重复项:




import duplicate

duplicate.find('/path/to/dir')

扫描两个文件中的重复项(至少):




import重复

duplicate.find('/path/to/file1','/path/to/file2')

重复

重复。清除('/path/to/dir',trash=false)


同时扫描更多目录:




import duplicate

duplicate.find('/path/to/dir1','/path/to/dir2','/path/to/dir3')


从iterable扫描:

::




iterable=['/path/to/dir1','/path/to/dir2','/path/to/dir3']


duplicate.find.from-iterable(iterable)


扫描忽略最小文件大小阈值:

::


import duplicate

duplicate.find('/path/to/dir',minSize=0)


高级用法
~~~~~~~~~~~~~~~~


不递归目录扫描:

::


import duplicate

duplicate.find('/path/to/file1','/path/to/file2','/path/to/dir1',,
recursive=false)

**注意:**在*非递归模式*中,与上面的情况一样,目录
路径被简单忽略。


扫描检查文件名和隐藏文件:

::


import duplicate

duplicate.find.from-iterable('/path/to/file1','/path/to/dir1',
comparename=true,scanHidden=true)

排除"*.doc")


扫描包括文件链接:

::


import duplicate

duplicate.find('/path/to/file1','/path/to/file2','/path/to/file3',
scan links=true)

使用自定义操作(打印)处理错误:





print(filename)


而不是
清除:

::


导入重复项


def purge_callback(文件名):
打印(文件名)
引发重复项。skipexception

duplicate.purge('/path/to/dir',ondel=purge_callback)

扫描重复项,应用自定义操作(打印)并将其移动到垃圾桶/回收站:






import duplicate

def purge_callback(文件名):
print(文件名)


duplicate.purge('/path/to/dir',ondel=purge_callback)

扫描重复项,使用自定义操作(打印)处理错误,
并应用自定义操作(移动到路径),而不是清除:




import shutil
import duplicate

打印(文件名)

def purge_回调(文件名):
关闭il.move(filename,'/path/to/custom dir')
引发重复。skipexception

duplicate.purge('/path/to/dir',
ondel=purge\u回调,onerror=error\u callback)

api引用
---------


过滤或清除。
-**返回**:自实例。
-**参数**:与内置的"异常"相同。
-**属性**:与内置的"异常"相同。
-**方法**:与内置的"异常"相同。

->类
~~~~~

-重复。\`cache`(*maxllen*\=\``默认的"maxlen``)
-**描述**:内部共享缓存类。
-**返回**:自实例。
-**参数**:

-``maxlen``存储的最大条目数。

-**属性**:

-``默认的"maxlen`"
-**描述**:默认的最大值存储的条目数。
-**值**:``128`。

-**方法**:

-
-``clear``(*self*)
-**说明**:如果没有被任何对象获取,则清除缓存。
-**返回**:``true``如果被清除,否则``false`.
-**参数**:无。

-重复。``deplicate``(*路径*,
*minSize*\=``默认minSize``,*maxSize*\=``默认maxSize`,
*包括*\=``无`,*排除*\=``无`,
*compareName*\=``假`,*comparemTime*\=``假`,
*comparemode*\=\``false`,*recursive*\=``true`,
*followlinks*\=``false`,*scanlinks*\=``false`,
*scanlempts*\=``false`,*scansystem*\=``true`,
*scanarchived*\=``true`,*ScanHidden*\=\``true`)
-**描述**:重复的主类。
-**返回**:自实例。
-**参数**:

-``path``iterable of directory and/or file path.
-``minSize``*(可选)*扫描。
-``maxsize``*(可选)*要在扫描中包含的文件的最大字节大小。
-``include``*(可选)*要在扫描中包含的文件的通配符模式。
-``exclude`*(可选)*要从中排除的文件的通配符模式扫描。
-``comparename``*(可选)*检查文件名。
-``comparemtime``*(可选)*检查文件修改时间。
-``compareperms``*(可选)*检查文件模式(权限)。
-``recursive``*(可选)*递归扫描目录。
-`` follow links``*(可选)*跟随指向
目录的符号链接。
-``scanlinks`*(可选)*扫描指向文件
(包括硬链接)的符号链接。
-``scanlempts`*(可选)*扫描空文件。
-``scanlystems`*(可选)*扫描操作系统文件。
-``扫描存档``*(可选)*扫描存档文件。
-``扫描隐藏``*(可选)*扫描隐藏文件。

-**属性**:

-``默认最小大小`
-**说明**:要包含在扫描中的文件的最小大小(字节)。
-**值**:``102400`.
-``默认的最大大小`
-**说明**:要包括在扫描中的文件的最大大小(以
字节为单位)。
-**值**:``107374182400`.
-``结果`

-**说明**:调用``find``或``purge``的结果(通过
默认值为"none"。
-**值**:``duplicate.resultinfo`。

-**方法**:

-``find```(*self*,*onerror*\=``none`,*notify*\=``none`)
-**说明**:查找重复文件。
-**返回**:none。
-**参数**:


-`` onerror``*(可选)*在文件扫描或筛选过程中发生错误时,使用两个
参数"exception"和"filename"调用回调函数。
-``通知``*(内部)*通知程序回调。

-``purge``(*self*,*trash*\=``true`,*ondel*\=``none`,
*onerror*\=``none`,*通知*\=``none`)
-**说明**:查找并清除重复文件。
-**返回**:none。
-**参数**:

-``trash``*(可选)*将重复文件移到trash/recycle
bin,而不是删除。
-``ondel``*(可选)*在清除重复文件之前,使用一个
参数``filename``调用回调函数。
-``onerror``*(可选)*使用两个
参数``exception``和``filename``调用回调函数文件扫描、筛选或清除期间发生错误。
-``notify``*(内部)*notifier回调。

-重复。``resultinfo``(*dupinfo*,*delduplist*,*scnerrist*,
*delerrors*)
-**描述**:重复的结果类。
-**返回**:``collections.namedtuple``(``resultinfo``,
``` dups deldups duprerrors scanerrors delerrors``).
-**参数**:

-``dupinfo```*(内部)*``*(内部)*iterable of files not scanned(due
errors)。
-``delerrors``*(内部)*iterable of files not purged(due
errors)。

-**properties**:与``collections.namedtuple``相同。
-**方法**:与``集合。namedtuple`.


*comparename*\=``false`,*comparemtime*\=``false`,
*comparemode*\=``false`,*recursive*\=``true`,
*followlinks*\=``false`,*scanlinks*\=``false`,
*scanlempts*\=``false`,*scansystem*\=``true`,
*scanarchived*\=``true`,*ScanHidden*\=``true`,
*onerror*\=``none`,*notify*\=\``none`)
-**描述**:查找重复文件。
-**返回**:``duplicate.resultinfo`。
-**参数**:

-``paths``iterable of directory and/or file path.
-``minsize```(可选)*扫描。
-``maxsize``*(可选)*要在扫描中包含的文件的最大字节大小。
-``include``*(可选)*要在扫描中包含的文件的通配符模式。
-``exclude`*(可选)*要从中排除的文件的通配符模式扫描。
-``comparename``*(可选)*检查文件名。
-``comparemtime``*(可选)*检查文件修改时间。
-``compareperms``*(可选)*检查文件模式(权限)。
-``recursive``*(可选)*递归扫描目录。
-`` follow links``*(可选)*跟随指向
目录的符号链接。
-``scanlinks`*(可选)*扫描指向文件
(包括硬链接)的符号链接。
-``scanlempts`*(可选)*扫描空文件。
-``scanlystems`*(可选)*扫描操作系统文件。
-``scan archived``*(可选)*扫描存档文件。
-``scan hidden``*(可选)*扫描隐藏文件。
-``onerror``*(可选)*用两个参数调用回调函数,``exception``和``filename`,当在文件扫描或筛选过程中发生错误时,
-``notify``````````(内部)\`(可选)*notifier回调。

-重复。``purge```(*\*路径*,
*minsize*\=``duplicate.deplicate.default\minsize`,
*maxsize*\=``重复.删除.默认值为maxsize``,
*包含*\=``none`,*排除*\=\``无``,
*comparename*\=``false`,*comparemtime*\=``false`,
*comparemode*\=``false`,*recursive*\=``true`,
*followlinks*\=``false`,*scanlinks*\=``false`,
*scanlempts*\=``false`,*scansystem*\=``true`,
*scanarchived*\=``true`,*ScanHidden*\=``true`,
*垃圾箱*\=``true`,*OnDel*\=``none`,*OnError*\=``none`,
*notify*\=``none`)
-**description**:查找并清除重复文件。
-**return**:``duplicate.resultinfo``。
-**参数**:

-``paths``可访问目录和/或文件路径。
-``minsize```*(可选)*要
包括在扫描中。
-``maxsize``*(可选)*要包含在扫描中的文件的最大字节大小。
-``include``*(可选)*要包含在
扫描中的文件的通配符模式。
-``exclude``*(可选)*要排除的文件的通配符模式
从扫描开始。
-``comparename``*(可选)*检查文件名。
-``comparemtime``*(可选)*检查文件修改时间。
-``compareperms``*(可选)*检查文件模式(权限)。
-``recursive``*(可选)*递归扫描目录。
-`` follow links``*(可选)*跟随指向
目录的符号链接。
-``scanlinks`*(可选)*扫描指向文件
(包括硬链接)的符号链接。
-``scanlempts`*(可选)*扫描空文件。
-``scanlystems`*(可选)*扫描操作系统文件。
-``scan archived``*(可选)*扫描存档文件。
-``scan hidden``*(可选)*扫描隐藏文件。
-``trash``*(可选)*将重复文件移到trash/recycle
bin,而不是删除。
-``ondel``*(可选)*调用的回调函数一个
参数,``filename``,在清除重复文件之前。
-``onerror```*(可选)*当文件扫描期间发生错误时,使用两个
参数,``exception``和``filename``调用回调函数,过滤或清除。
-``notify```*(内部)**(可选)*通知程序回调。

…_描述:描述
…_特征:特征
…_安装:安装
…_ pip安装:pip安装
…_ tarball安装:tarball安装
…_用法:用法
…_快速启动:快速启动
…_高级用法:高级用法
…_ API引用:API引用
…_异常:异常
…_班级:班级
…_功能:功能
…_ PIP安装方式:PIP安装
…_ tarball安装部分:tarball安装
…_ get-pip.py:https://bootstrap.pypa.io/get-pip.py
。_ python解释器:https://www.python.org
。_--用户:https://pip.pypa.io/en/latest/user_guide/用户安装
…_邮编:https://github.com/deplicate/deplicate/archive/master.zip
…_ tar:https://github.com/deplicate/deplicate/archive/master.tar.gz



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何通过jamod读取控制器的输入状态?   java Back bean方法在使用两个h的单一表单时未调用:selectonemenus和command button   mockitojava中的单元测试Mock继承方法   java在不传递到构造函数的情况下,将一个类的实例使用到另一个类中的最佳方法是什么   java Spring MVC:如何通过API在Dozer的toplevel字段中允许空值?   java hibernate到MSSQL服务器的连接被拒绝:连接   java动态调用现有变量   在java中扩展多个类的泛型   java使用JNA Ptrace获取linux中外部进程的信息?   eclipse获取Java项目中所有构建错误的最快方法是什么?   java将动态数组拆分为多个数组   java安卓:将json保存到sqlite   java获取最近时间Android   java如何为多对多关联编写HQL查询?   java Docker compose for mysql和spring应用程序拒绝访问   java查找数组(如果它是另一个数组的子集)   java如何在另一个具有相同数据类型参数的泛型类(或接口)中使用泛型类(或接口),而无需强制转换   Apache POI java。lang.NoClassDefFoundError:org/apache/commons/compress/utils/InputStreamStatistics   java使用Jackson将JSON反序列化为异构元素列表   使用MapReduce实现java规范化