Faster OSは、Pythonの標準「OS」モジュールのドロップイン交換です。 Faster OSは、 os.pathモジュール内の機能を置き換える機能を完全に廃止、最適化、高速化する機能を提供します。
より高速なOSのおかげで、 1分で1,400,000のパスを処理できますが、 OSモジュールでは1時間以上かかります。
# Use Faster OS to save hours of processing time!
# The only thing you need to do is write...
import faster_os as os 速い。最適化。依存関係は0です。ライト。
より速いOSが使用されます:
Myquickmac Neo-あなたのMacのAI駆動型ケアのための革新的なプログラム-www.ambeteco.com/myquickmac-neo
Myquickmac Lite -AIファイル管理のための革新的なプログラム-www.ambeteco.com/myquickmac -lite
4-Organizer Ultra- ai-www.ambeteco.com/4-organizer-ultraを搭載したWindows PCを自動的に整理する強力なプログラム
4-Organizer nano-自動的にPCを整理し、ファイルの無限のカオスに終止符を打つ-www.ambeteco.com/4-organizer-nano
Wiper AI-開発中の、すぐに利用可能
より高速なOSは、安定した生産対応ツールです。
平均して、OSモジュールの元の関数よりも高速のOS関数は1504%高速です。
最もよく使用されている関数( split 、 join 、 splitext )は、平均で1215%高速です。
| 名前 | より速い時間 | より高速なOS:プロセス1,000,000パス | OS:プロセス1,000,000パス |
|---|---|---|---|
join | 1530% | 14秒 | 3分20秒 |
splitext | 1059% | 8秒 | 1分33秒 |
split | 1190% | 18秒 | 4分43秒 |
完全なベンチマークの結果:
| 関数 | パス量 | より速い時間 | OS時間 | より速いOS時間 |
|---|---|---|---|---|
| スプリット | 5500 | 1105% | 0.8109 | 0.0733 |
| splitdrive | 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 |
| relpath | 5500 | 3653% | 12.1418 | 0.3323 |
| IsMount | 5500 | 3620% | 71.5931 | 1.9776 |
| ノルムパス | 6500 | 326% | 1.9621 | 0.6026 |
| Expanduser | 5500 | 493% | 0.1539 | 0.0312 |
| アブスパス | 5500 | 180% | 3.5075 | 1.9471 |
| ISABS | 5500 | 760% | 0.6911 | 0.0909 |
| ベースネーム | 5500 | 1217% | 0.8403 | 0.0690 |
| dirName | 5500 | 1236% | 0.8473 | 0.0685 |
| CommonPath | 5000 | 738% | 4.4296 | 0.5998 |
| CommonPrefix | 5000 | 356% | 0.9480 | 0.2661 |
多機能ベンチマーク結果:
| 関数 | チャンク量(各50〜100パス) | より速い時間 | より速いOS時間 | OS時間 |
|---|---|---|---|---|
| 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_normpath | 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 |
指定された反復可能に250を超える要素がある場合は、 multi-functionsを使用することをお勧めします。小さなリストの場合、 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モジュールによって提起されたものと一致しません。
たとえば、この場合、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関数にタイプチェックまたは検証を追加する予定はありません。このため、例外は、人間が読みやすい、理解しやすいものではないかもしれません。
現在、より高速なOSはstrのみをサポートしています。 bytesサポートは、次の更新に追加されます。たぶん、 os.PathLikeオブジェクトでさえ、次のリリースでサポートされるでしょう。
Python 3
cビルドツール:
Windows用:Visual Studioをインストールしてください
Unixの場合:GCC(おそらくすでにインストールされています)
MacOSの場合:Xcode CMDツールをインストールしています(ターミナルにgccを入力して、インストールされているかどうかを確認してください)
Mozilla Public License 2.0の下で、Faster OSがライセンスされています。これは、クローズドソースコードを使用して、商業/独自のプロジェクトで使用できることを意味します。ソースコードを開示する必要はありません。
OS関数からすべての高速OS関数の動作が「ミラーリング」されるため、公式のOSモジュールドキュメントを読むことをお勧めします。以下に、すべての高速OS関数に関する短いドキュメントを見つけることができます。
faster_os.path.normpath(path: str) -> str
パスを正規化します:「/」を「Windows上(またはUNIXの反対)に「/」に置き換え、「」に関連する他の変更を行います。そして '..'。
faster_os.path.normcase(path: str) -> str
パス( str.lower )を下げて、windowsで「/」を ''に置き換えます(またはunixの反対)。
faster_os.path.split(path: str) -> tuple
パスがディレクトリ名とベース名に分割されたタプルを返します。
例:「Some/Example/Path」 - >(「Some/Example '、' 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
Platform Delimiter( '/'または '')を使用して、指定されたすべてのパスに結合します。
例:
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
反復可能(リスト、タプルなど)を取り、各要素にNormpathを適用します。
リストを返します。
faster_os.path.multi_normcase(paths) -> list
任意の反復可能(リスト、タプルなど)を取得し、各要素にノルムケースを適用します。
リストを返します。
faster_os.path.multi_splitdrive(paths) -> list
任意の反復可能(リスト、タプルなど)を取り、各要素にsplitdriveを適用します。
リストを返します。
faster_os.path.multi_isabs(paths) -> list
反復可能(リスト、タプルなど)を取り、各要素にISABを適用します。
リストを返します。
faster_os.path.multi_join(paths) -> list
反復可能(リスト、タプルなど)を取り、各要素に結合します。
リストを返します。
faster_os.path.multi_splitext(paths) -> list
任意の反復(リスト、タプルなど)を取得し、各要素にsplitextを適用します。
リストを返します。
faster_os.path.multi_basename(paths) -> list
反復可能(リスト、タプルなど)を取り、各要素にベースネームを適用します。
リストを返します。
faster_os.path.multi_dirname(paths) -> list
反復可能(リスト、タプルなど)を取り、各要素にdirNameを適用します。
リストを返します。
faster_os.path.multi_relpath(paths) -> list
反復可能(リスト、タプルなど)を取り、各要素にrelPathを適用します。
リストを返します。
faster_os.path.multi_expanduser(paths) -> list
反復可能(リスト、タプルなど)を取り、各要素に拡張機能を適用します。
リストを返します。
faster_os.path.multi_ismount(paths) -> list
任意の反復可能(リスト、タプルなど)を取り、各要素にISMountを適用します。
リストを返します。
faster_os.path.multi_abspath(paths) -> list
任意の反復可能(リスト、タプルなど)を取り、各要素にAbspathを適用します。
リストを返します。
faster_os.path.multi_commonprefix(paths) -> list
反復可能(リスト、タプルなど)を取り、各要素にCommonPrefixを適用します。
リストを返します。
faster_os.path.multi_commonpath(paths) -> list
任意の反復(リスト、タプルなど)を取り、各要素にCommonPathを適用します。
リストを返します。
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を適用します。