pysorter:根据正则表达式来组织和整理文件和目录

Posted Python程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pysorter:根据正则表达式来组织和整理文件和目录相关的知识,希望对你有一定的参考价值。

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

pysorter

    这是一条可以根据正则表达式来组织整理文件和目录的命令

快速开始

  • pip install pysorter

  • pysorter

命令行解释

pysorter:根据正则表达式来组织和整理文件和目录

配置实例

    pysorter针对一些常用的文件类型进行了默认的规则匹配,当然你也通过修改pysorter/filetypes.py文件来实现自定义规则。


实例 1:

    假设我们想将所有的PDF文档放置于同一个PDF目录下,该目录位于/home/chris/sorted/documents/。第一步我们必须写一个规则文件,该文件是一个定义了我们要移动的文件的目标文件夹的python模块。

注意:

  • 规则是按照顺序尝试匹配的,一旦匹配成功后续规则会被忽略。

  • "/”在目标 (documents/pdf/)中非常重要,因为所有的PDF将会移动到目录 documents/pdf/中。如果"/”缺失document/pdf,那么所有的PDF文件将会被移动到目录document中的名字叫做pdf的文件中。这显然不是我们想要的。

  • 目标也可以是一个Python的可调用对象。


实例 2:

    我们想将Facebook中下载的所有图片放置于目录 images/facebook/ 而非目录images/。你可能会注意到Facebook的图片都是以_n.jpg结尾的。我们可将前缀进行分离,并按照下面规则来写:

注意:

    这个例子可能看起来比较复杂,但它其实仅用到了python的基本功能。让我们分解下:

  • (?P<filename>[^/]+)被称为命名匹配组,它将匹配任何字符串,只要其后紧跟的不是/字符,这样文件名就不包含目录了。下面是几个匹配的例子: 

    • tosort/myphoto_n.jpg. filename=myphoto

    • tosort/foo/y123_n.jpg. filename=y123

  • 在目标规则中,我们可以同时使用命名匹配规则和非命名匹配规则。

你也可以通过查看pysorter.filetypes模块来获得更多帮助。

说明

由于使用了Python的shutil库,所以会有下列警告:

警告 

    即使高级文件拷贝功能(shutil.copy(), shutil.copy2())也不能将文件的全部属性拷贝.

    - 在POSIX平台,这意味着文件owner和group属性将会和ACLs一样丢失。 

    - 在MAC OS平台,资源派生(resurce fork)和其他元数据(metadata)将不会被使用到。 

      这意味着这些资源将会丢失并且文件类型和创建者代码可能会不正确。

    - 在Windows平台,文件拥有者,ACL和ile owners, ACLs and 交换数据流(ADS)将不会被拷贝。

    如果文件属于同一个文件系统,那么将不会用到copy 或 copy2 ,这不会涉及任何风险。


如果你有什么不明白的地方可以创建问题,我们将竭尽全力帮助解决

版本要求

Python version:

2.7

3.3

3.4

3.5

版本历史

请查看 guide.


以上是关于pysorter:根据正则表达式来组织和整理文件和目录的主要内容,如果未能解决你的问题,请参考以下文章

常用正则表达式

正则表达式学习整理

Linux常见命令整理

shell-正则表达式和文本处理器

根据正则表达式匹配页面中js和css文件

第六章,文本处理工具和正则表达式