优化和封装工具,使它们更强大

chenlib的Python项目详细描述


chenlib 模块目录:

  1. fpmgt :file path management

    -- 提供面向对象的文件与系统路径相关操作


chenlib.fpmgt

​ 集成了标准库中的 pathlib 与 shutil,该模块以路径操作为核心,调用者只需通过传入路径实例化一个路径的操作对象,即可对路径所指向的区域调用操作函数,fpmgt提供了对文件的创建、删除、移动、重命名以及创建符号链接等操作,以及针对树结构的目录的递归拷贝、递归移动、递归删除等操作。

​ fpmgt 模块提供两种实例化方式, PurePath 和 Path ,分别对应了纯路径以及具象路径

fromchenlib.fpmgtimport*# PurePath(*pathsegments)# 纯路径对象,只提供对路径本身的操作path=PurePath('.')# pathsegments 可接收一个或多个代表路径片段的字符串path=PurePath('f:\\','abc','c')# 等同于 PurePath(r'f:\abc\c')path=PurePath('f:\\a','f:\\b')# 传入多个绝对路径则锚定最后一个PurePath(r'f:\b')# 具象路径对象,PurePath 的子类,提供针对系统文件的 IO 操作path=Path('.')# 路径对象可通过转换成 string 或 bytes 类型,传递给任何需要字符串形式路径的函数pure_path=PurePath('f:\\','abc','c')path=Path(str(pure_path))# 实现将纯路径对象转换成具象路径对象

​ PurePath 的一些访问属性的实例方法:

# PurePath.parts # 可以访问路径的多个组件r=PurePath('c://abc//cc').parts# r == ('c:\\', 'abc', 'cc')# PurePath.anchor # 返回路径的盘符名称,如果它存在的话r=PurePath('c://abc//cc').anchor# r -> string == 'c:\\'r=PurePath('//abc//cc').anchor# r -> string == '\\'# PurePath.parents # 通过类似切片下标的方式去访问路径逻辑祖先的部分组件r=PurePath('c://abc//cc//test.txt').parents[0]# r -> PurePath('c://abc//cc')r=PurePath('c://abc//cc//test.txt').parents[1]# r -> PurePath('c://abc')r=PurePath('c://abc//cc//test.txt').parents[2]# r -> PurePath('c://')# PurePath.name# 返回路径最后一个组件,排除了驱动器与根目录,如果它存在的话r=PurePath('c://abc//cc//test.txt').name# r -> string == 'test.txt'r=PurePath('c://abc//cc').name# r -> string == ''# PurePath.suffix# 访问该路径的最后一个组件的文件扩展名,如果它存在的话r=PurePath('c://abc//cc//test.txt').suffix# r -> string == '.txt'r=PurePath('c://abc//cc//test.pyc.txt').suffix# r -> string == '.txt'r=PurePath('c://abc//cc').suffix# r -> string == ''# PurePath.stem # 访问该路径的最后一个组件,去除文件扩展名,如果它存在的话r=PurePath('c://abc//cc//test.txt').stem# r -> string == 'test'r=PurePath('c://abc//cc//test.pyc.txt').stem# r -> string == 'test.pyc'r=PurePath('c://abc//cc').stem# r -> string == 'cc'

​ PurePath 的一些的操作路径的实例方法:

# PurePath.is_absolute()  # 判断该对象指向的路径是否是一个绝对路径,返回一个 bool 值r=PurePath('c://abc//cc.txt').is_absolute()# r == True / False# PurePath.joinpath(*path_segments)  # 在原始路径上进行连接,返回一个连接后的路径对象,不影响原始路径r=PurePath('c://').joinpath('abc')# r == PurePath('c://abc')r=PurePath('c://').joinpath('abc','cc')# r == PurePath('c://abc//cc')# PurePath.longer_joinpath(*path_segments)  # 与 joinpath() 一样,但是该函数会永久的修改对象的原始路径r=PurePath('c://').longer_joinpath('abc')# r == PurePath('c://abc')# PurePath.match(pattern)  # 将此路径与提供的通配符风格的模式匹配,返回一个 bool 值r=PurePath('abc//cc//test.txt').match('*.py')# r -> bool -> Truer=PurePath('abc//cc//test.txt').match('cc//*.py')# r -> bool -> Truer=PurePath('abc//cc//test.txt').match('abc//*.py')# r -> bool -> False# 如果 pattern 是绝对路径,则路径也必须是绝对的,而且必须完全匹配:r=PurePath('c://test.txt').match('c://*.txt')# r -> bool -> Truer=PurePath('c://test.txt').match('*.txt')# r -> bool -> False# PurePath.with_name(name) # 修改路径的 name 并返回修改后的新路径对象# 如果原始路径没有 name ,抛出 ValueError 错误r=PurePath('c://abc//test.txt').with_name('test.pyc')# r == 'c://abc//test.pyc'# PurePath.with_suffix(suffix) # 修改路径的 suffix 并返回修改后的新路径对象# 如果原始路径没有后缀,则将 suffix 追加为后缀# 如果 suffix 为空字符串,则将原始路径的后缀移除r=PurePath('c://abc//test.txt').with_name('.pyc')# r == 'c://abc//test.pyc'r=PurePath('c://abc//test').with_name('.pyc')# r == 'c://abc//test.pyc'r=PurePath('c://abc//test').with_name('')# r == 'c://abc//test'

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

推荐PyPI第三方库


热门话题
java如何在没有代码气味的情况下编写遵循Liskov替代和其他可靠原则的不可变映射?   java最新jre上的压缩字符串对旧编译代码有好处吗?   java是否可以在javascript中取消PrimeFaces menuitem onclick函数   mysql从SQL数据库中访问java中xml名称空间标记的值   从java程序打开excel文件   java在方法中使用“var”是否会使执行(并发)线程不安全?   java使搜索视图以一种关于AndroidManifest的通用方式可用。xml   java对如何准确使用正则表达式感到困惑?   mule如何访问java文件中的记录变量   java在从2D数组引发异常后继续   枚举当前设置为的java值   java当listview只有几个项目时,如何使alert对话框显示listview的所有项目?   java getTableRow()返回大于项大小的索引   c用java传输二进制文件(数据)   java更改多选列表项复选框颜色