更快的操作系统是Python标准“ OS”模块的置换式替换。更快的操作系统提供32个完全划化的,优化和加速功能的功能,这些功能取代了os.path模块中的功能。
多亏了更快的操作系统,您可以在一分钟内处理1,400,000条路径,而使用操作系统则需要一个多小时。
# Use Faster OS to save hours of processing time!
# The only thing you need to do is write...
import faster_os as os 快速地。优化。具有0个依赖关系。光。
使用更快的操作系统在:
Myquickmac Neo- Mac的AI驱动护理的革命性计划-www.ambeteco.com/myquickmac-neo
Myquickmac Lite- AI文件管理的创新计划-www.ambeteco.com/myquickmac-lite
4-Organizer Ultra-一个强大的程序,可以自动解开Windows PC,由AI-www.ambeteco.com/4-organizer-ultra提供支持
4-Organizer Nano-自动整理PC,并结束文件的无限混乱-www.ambeteco.com/4-organizer-nano
雨刮器AI-正在开发,即将提供
更快的操作系统是一种稳定的,可以生产的工具。
平均而言,更快的OS函数比OS模块的原始功能快1504% 。
最常用的功能( split , join , splitext )平均更快1215% :
| 姓名 | 时间更快 | 更快的操作系统:过程1,000,000路径 | 操作系统:过程1,000,000路径 |
|---|---|---|---|
join | 1530% | 14秒 | 3分20秒 |
splitext | 1059% | 8秒 | 1分33秒 |
split | 1190% | 18秒 | 4分43秒 |
完整的基准结果:
| 功能 | 路径量 | 时间更快 | 操作系统时间 | 更快的操作系统时间 |
|---|---|---|---|---|
| 分裂 | 5500 | 1105% | 0.8109 | 0.0733 |
| 拆分驱动器 | 5500 | 445% | 0.3849 | 0.0864 |
| 规范 | 5500 | 313% | 0.1608 | 0.0513 |
| Splitext | 5500 | 938% | 0.5017 | 0.0535 |
| 加入 | 5000 | 1442% | 1.4388 | 0.0997 |
| relath | 5500 | 3653% | 12.1418 | 0.3323 |
| Ismount | 5500 | 3620% | 71.5931 | 1.9776 |
| NORMPATH | 6500 | 326% | 1.9621 | 0.6026 |
| 扩展使用程序 | 5500 | 493% | 0.1539 | 0.0312 |
| 斜肌 | 5500 | 180% | 3.5075 | 1.9471 |
| iSabs | 5500 | 760% | 0.6911 | 0.0909 |
| Basename | 5500 | 1217% | 0.8403 | 0.0690 |
| dirname | 5500 | 1236% | 0.8473 | 0.0685 |
| CommonPath | 5000 | 738% | 4.4296 | 0.5998 |
| 普通冠军 | 5000 | 356% | 0.9480 | 0.2661 |
多功能基准结果:
| 功能 | 块数量(每50-100条路径) | 时间更快 | 更快的操作系统时间 | 操作系统时间 |
|---|---|---|---|---|
| MULTI_COMMONPATH | 1000 | 761% | 0.1167 | 0.8886 |
| MULTI_COMMONPREFIX | 1000 | 435% | 0.0491 | 0.2137 |
| MULTI_ABSPATH | 4500 | 195% | 1.3105 | 2.5564 |
| Multi_ismount | 4500 | 6853% | 1.2878 | 88.2588 |
| Multi_expanduser | 4500 | 448% | 0.0680 | 0.3050 |
| MULTI_RELPATH | 1100 | 3772% | 0.0646 | 2.4374 |
| multi_split | 4500 | 1475% | 0.0442 | 0.6528 |
| Multi_splitdrive | 4500 | 628% | 0.0476 | 0.2989 |
| Multi_normcase | 4500 | 451% | 0.0298 | 0.1348 |
| MULTI_NOMPATH | 1300 | 362% | 0.1194 | 0.4324 |
| MULTI_BASENAME | 4500 | 1599% | 0.0423 | 0.6770 |
| multi_dirname | 4500 | 1644% | 0.0418 | 0.6888 |
| multi_isabs | 4500 | 1023% | 0.0539 | 0.5514 |
| Multi_splitext | 4500 | 1282% | 0.0318 | 0.4077 |
| MULTI_JOIN | 1000 | 1418% | 0.0204 | 0.2902 |
我们建议使用multi-functions时使用多功能,其中有250多个元素。对于较小的列表,使用multi-functions是无效的。
# Faster OS - a drop-in replacement for the 'OS' module
# Up to 6800% faster!
import faster_os
# All 'OS' functions you need, and even more!
# 32 rewritten functions, optimized for speed and performance.
faster_os . path . join ( '/' , 'some' , 'path' )
> >> '/some/path'
faster_os . path . split ( '/some/test/path' )
> >> ( '/some/test' , 'path' )
faster_os . path . join ( 'C: \ ' , 'Windows \ System32' , 'LogFiles' )
> >> 'C: \ Windows \ System32 \ LogFiles'
faster_os . path . split ( 'C: \ Users \ User \ Desktop' )
> >> ( 'C: \ Users \ User' , 'Desktop' )
# Works both for UNIX and for Windows!
# Everything works exactly the same as in 'OS':
# -- splitext --
faster_os . path . splitext ( 'hello world \ 123.ext' )
> >> ( 'hello world \ 123' , '.ext' )
faster_os . path . splitext ( 'C: \ sample_photo.jpg' )
> >> ( 'C: \ sample_photo' , '.jpg' )
# -- splitdrive --
faster_os . path . splitdrive ( 'C: \ HELLO WORLD \ SOME PATH' )
> >> ( 'C:' , ' \ HELLO WORLD \ SOME PATH' )
faster_os . path . splitdrive ( ' \ \ machine \ mountpoint \ directory \ etc \ ' )
> >> ( ' \ \ machine \ mountpoint' , ' \ directory \ etc \ ' )
# -- normpath --
faster_os . path . normpath ( 'C: \ \ hello \ \ \ world \ \ \ ' )
> >> 'C: \ hello \ world'
faster_os . path . normpath ( 'An invalid \ \ \ path \ \ with many slashes \ \ \ \ \ \ ' )
> >> 'An invalid \ path \ with many slashes'
# -- abspath --
faster_os . path . abspath ( 'Desktop' )
> >> 'D: \ Libraries \ Desktop \ Pys \ Big \ FasterOS \ Desktop'
faster_os . path . abspath ( 'Appdata \ Local' )
> >> 'D: \ Libraries \ Desktop \ Pys \ Big \ FasterOS \ Appdata \ Local'
# -- expanduser --
faster_os . path . expanduser ( '~ \ Downloads \ file.exe' )
> >> 'C: \ Users \ Dsibe \ Downloads \ file.exe'
faster_os . path . expanduser ( '~ \ Appdata' )
> >> 'C: \ Users \ Dsibe \ Appdata'
# -- normcase --
faster_os . path . normcase ( 'C:/HELLO WORLD/SOME/PATH/' )
> >> 'c: \ hello world \ some \ path \ '
faster_os . path . normcase ( 'C:/faster-os/a-unix-path/to-windows/path' )
> >> 'c: \ faster-os \ a-unix-path \ to-windows \ path'
# -- isabs --
faster_os . path . isabs ( 'C: \ Users \ User' )
> >> True
faster_os . path . isabs ( '~ \ user' )
> >> False
faster_os . path . isabs ( '%USERPROFILE% \ hi' )
> >> False
# -- basename --
faster_os . path . basename ( 'C: \ HELLO WORLD \ SOME PATH' )
> >> 'SOME PATH'
faster_os . path . basename ( 'C: \ faster-os' )
> >> 'faster-os'
# -- dirname --
faster_os . path . dirname ( 'C: \ HELLO WORLD \ SOME PATH' )
> >> 'C: \ HELLO WORLD'
faster_os . path . dirname ( 'C: \ faster-os' )
> >> 'C: \ '
# -- commonpath --
faster_os . path . commonpath ([
'C: \ \ Common' , 'C: \ \ Common \ \ ' , 'C: \ \ Common \ \ 123' , 'C: \ \ Common \ \ Common' ,
'C: \ \ Common \ \ abtco \ \ faster_os'
])
> >> 'C: \ Common'
# -- commonprefix--
faster_os . path . commonprefix ([
'C: \ \ ' , 'C: \ \ 1 \ \ 123/123/123 \ \ 123' , 'C: \ \ hello world \ \ some path' ,
'C: \ \ hello world \ \ some path \ \ '
])
> >> 'C: \ '
# And 21 more functions...
# Also, Faster OS also offers special 'multi-functions'.
# Use them to process extra large lists, containing hundreds of thousands of elements!
multi_abspath , multi_basename , multi_commonpath , multi_commonprefix , multi_dirname , multi_expanduser , multi_isabs , multi_ismount , multi_join , multi_normcase , multi_normpath , multi_relpath , multi_split , multi_splitdrive , multi_splitext
# For example:
faster_os . multi_join ([
( 'path/to/join' , 'some path' ),
( 'path/to/join' , 'other path' ),
( 'path/to/join' , 'other path 2' ),
( 'path/to/join' , 'other path 3' ),
...
])
# We recommend using multi-functions over lists with more than 250 elements.
# Even further, Faster OS re-implements removedirs and adds remove_multiple_dirs
faster_os . removedirs ( 'C: \ This \ Path \ Will \ Be \ Deleted' ) pip install faster_os --upgrade
克隆存储库: git clone https://github.com/American-Best-Technologies-Company/faster-os.git
运行python3 setup.py build_ext
完毕!验证安装: import faster_os
如果给定的参数有效,则更快的OS与OS模块完全相同。这意味着,如果您在任何有效的路径上使用更快的操作系统,则它将与OS模块完全一样。
如果您将一些无效的路径作为参数以更快的操作函数,那么它提出的大多数异常将与OS模块提出的函数匹配。
例如,在这种情况下,OS和更快的OS提出的例外是相同的:
import os
os . path . join ( 'some path' , None )
> >> TypeError : join () argument must be str , bytes , or os . PathLike object , not 'NoneType'
import faster_os
faster_os . path . join ( 'some path' , None )
> >> TypeError : sequence item 0 : expected str instance , NoneType found但是有时候,提出的例外可能会有所不同:
import os
os . path . normcase ( None )
> >> TypeError : expected str , bytes or os . PathLike object , not NoneType
import faster_os
faster_os . path . normcase ( None )
> >> AttributeError : 'NoneType' object has no attribute 'replace'这样做的主要原因是更快的OS:速度的主要目标。
添加类型和路径有效性检查将显着减慢更快的OS。目前,我们不打算在更快的OS功能中添加任何类型检查或某些验证。因此,例外可能不是那么可读或易于理解。
目前,更快的操作系统仅支持str 。 bytes支持将在下一个更新中添加。也许,即使是os.PathLike对象也会在下一个版本中得到支持。
Python 3
C构建工具:
对于Windows:安装了Visual Studio
对于UNIX:GCC(可能已经安装了)
对于MacOS:安装了Xcode CMD工具(在终端中输入gcc以检查是否已安装)
更快的OS已根据Mozilla公共许可证2.0获得许可。这意味着您可以在封闭的源代码中将其用于商业/专有项目。您无需披露源代码。
我们建议阅读官方的OS模块文档,因为所有更快的OS函数都会从OS功能中“镜像”。在下面,您可以在所有更快的操作系统功能上找到简短的文档。
faster_os.path.normpath(path: str) -> str
将路径归一化:在Windows上(或UNIX上的相反)替换'/'to',并进行与''相关的其他更改。和 '..'。
faster_os.path.normcase(path: str) -> str
降低路径( str.lower ),然后在Windows上(或Unix上的相反)替换为'/''。
faster_os.path.split(path: str) -> tuple
将元组返回,该路径分裂为目录名称和基本名称:
示例:'一些/示例/路径' - >('一些/示例','path')
faster_os.path.splitdrive(path: str) -> tuple
仅在Windows上有意义:将路径分为驱动器和路径。
示例: 'C:\Windows' -> ('C:', '\Windows')
faster_os.path.isabs(path: str) -> cython.bint
检查路径是否绝对。
例子:
'C:\some absolute\path' -> True
'some\relative\path\' -> False
faster_os.path.join(path: str, *paths) -> str
使用平台定界符('/'或'')加入所有给定路径。
例子:
faster_os.path.('C:\', 'some', 'path') -> 'C:\some\path'
faster_os.path.splitext(path: str) -> tuple
将路径分为路径和延伸。
例子:
'a photo.jpg' -> ('a photo', '.jpg')
faster_os.path.basename(path: str) -> str
返回路径的基本名称。
'C:\some absolute\path' -> 'path'
faster_os.path.dirname(path: str) -> str
返回路径的目录名称。
'C:\some absolute\path' -> 'C:\some absolute\'
faster_os.path.ismount(path: str) -> cython.bint
检查路径是否是安装点。
faster_os.path.expanduser(path: str) -> str
将“〜”扩展到用户配置文件或家庭路径中。
例子:
'~Desktop' - > 'C: \ Users \ Desktop
'~ \ Desktop' - > 'C: \ Users \ User \ Desktop
^ ^ notice this slash faster_os.path.relpath(tail: str, root=None) -> str
根据root计算tail的相对路径。
如果root没有,则将其分配给当前的工作目录os.getcwd() 。
faster_os.path.commonprefix(paths) -> str
找到给定路径的常见前缀。
例子:
['faster_os/abc', 'faster_os/abcde', 'faster_os/abc123'] -> 'faster_os/abc'
faster_os.path.commonpath(paths) -> str
找到给定路径的常见路径。
与CommonPrefix相反,找到了完整的路径。
例子:
['faster_os/abc', 'faster_os/abcde', 'faster_os/abc123'] -> 'faster_os'
faster_os.path.abspath(path: str) -> str
尝试使用操作系统的API获取绝对路径,或者落后于使用CWD加入路径。
faster_os.path.multi_split(paths) -> list
采用任何疑问(列表,元组等),并应用于每个元素。
返回列表。
faster_os.path.multi_normpath(paths) -> list
获取任何可观的(列表,元组等),并将标准路径应用于每个元素。
返回列表。
faster_os.path.multi_normcase(paths) -> list
将任何可观的(列表,元组等)应用于每个元素。
返回列表。
faster_os.path.multi_splitdrive(paths) -> list
将任何可观的(列表,元组等)应用于每个元素。
返回列表。
faster_os.path.multi_isabs(paths) -> list
将任何可观的(列表,元组等)获取,并将ISAB应用于每个元素。
返回列表。
faster_os.path.multi_join(paths) -> list
获取任何可观的(列表,元组等),并适用于每个元素。
返回列表。
faster_os.path.multi_splitext(paths) -> list
将任何可观的东西(列表,元组等)应用于每个元素。
返回列表。
faster_os.path.multi_basename(paths) -> list
获取任何可观的(列表,元组等),并将Basename应用于每个元素。
返回列表。
faster_os.path.multi_dirname(paths) -> list
获取任何可观的(列表,元组等),并将DirName应用于每个元素。
返回列表。
faster_os.path.multi_relpath(paths) -> list
获取任何疑问(列表,元组等),并将relate应用于每个元素。
返回列表。
faster_os.path.multi_expanduser(paths) -> list
将任何可观的(列表,元组等)应用于每个元素。
返回列表。
faster_os.path.multi_ismount(paths) -> list
获取任何可观的(列表,元组等),并将其应用于每个元素。
返回列表。
faster_os.path.multi_abspath(paths) -> list
拿任何可觉得的(列表,元组等),并在每个元素上应用ABSPATH。
返回列表。
faster_os.path.multi_commonprefix(paths) -> list
获取任何可观的(列表,元组等),并在每个元素上应用共同点。
返回列表。
faster_os.path.multi_commonpath(paths) -> list
将任何可观的(列表,元组等)用于每个元素。
返回列表。
faster_os.removedirs(path) -> None
删除所有路径组件,直到增加例外。
removedirs将尝试删除每个目录,直到引起错误为止,例如,目录不是空的或有权限错误:例如::
Given path "C:UsersUserDesktopmany f oldershere"
Delete "C:UsersUserDesktopmany f oldershere"
Delete "C:UsersUserDesktopmany f olders"
Delete "C:UsersUserDesktopmany"
Delete "C:UsersUserDesktop " -> ERROR - return faster_os.remove_multiple_dirs(paths) -> None
将任何可观的(列表,元组等) removedirs每个元素。