Schnelleres Betriebssystem ist ein Drop-In-Ersatz für das Standard-OS-Modul von Python. Schnelleres Betriebssystem bietet 32 vollständige, optimierte und beschleunigte Funktionen, die die im os.path -Modul ersetzen.
Dank eines schnelleren Betriebssystems können Sie in nur einer Minute 1.400.000 Wege verarbeiten, während es mehr als eine Stunde mit einem Betriebssystemmodul dauern würde.
# Use Faster OS to save hours of processing time!
# The only thing you need to do is write...
import faster_os as os Schnell. Optimiert. Hat 0 Abhängigkeiten. Licht.
Schnelleres Betriebssystem wird in: verwendet in:
MYQUICKMAC NEO - Ein revolutionäres Programm für die AI -betriebene Pflege Ihres Mac - www.ambeteco.com/myquickmac-neo
MYQUICKMAC LITE - Ein innovatives Programm für AI -Dateimanagement - www.ambeteco.com/myquickmac -lite
4-Organizer Ultra -Ein leistungsstarkes Programm, mit dem Sie Ihren Windows-PC automatisch übertreffen können, das von AI-www.ambeteco.com/4-organizer-ultra betrieben wird
4-Organizer Nano -Tidies auf Ihrem PC automatisch und beendet das unendliche Chaos von Dateien-www.ambeteco.com/4-organizer-nano
Wischer -AI - im Entwicklungsbereich, bald erhältlich
Schnelleres Betriebssystem ist ein stabiles, produktionsbereites Werkzeug.
Im Durchschnitt ist eine schnellere Betriebssystemfunktion 1504% schneller als eine ursprüngliche Funktion aus dem Betriebssystemmodul.
Die am häufigsten verwendeten Funktionen ( split , join , splitext ) sind durchschnittlich 1215% schneller :
| Name | Mal schneller | Schnelleres Betriebssystem: Verarbeiten Sie 1.000.000 Pfade | OS: Verarbeiten Sie 1.000.000 Pfade |
|---|---|---|---|
join | 1530% | 14 Sekunden | 3 Minuten 20 Sekunden |
splitext | 1059% | 8 Sekunden | 1 Minute 33 Sekunden |
split | 1190% | 18 Sekunden | 4 Minuten 43 Sekunden |
Vollständige Benchmark -Ergebnisse:
| Funktion | Pfade Betrag | Mal schneller | OS -Zeit | Schnellere Betriebssystemzeit |
|---|---|---|---|---|
| Teilt | 5500 | 1105% | 0,8109 | 0,0733 |
| SplitDrive | 5500 | 445% | 0,3849 | 0,0864 |
| Normcase | 5500 | 313% | 0,1608 | 0,0513 |
| Splitext | 5500 | 938% | 0,5017 | 0,0535 |
| verbinden | 5000 | 1442% | 1.4388 | 0,0997 |
| relpath | 5500 | 3653% | 12.1418 | 0,3323 |
| Ismount | 5500 | 3620% | 71.5931 | 1.9776 |
| NormPath | 6500 | 326% | 1,9621 | 0,6026 |
| Erweiterung | 5500 | 493% | 0,1539 | 0,0312 |
| Abspath | 5500 | 180% | 3.5075 | 1.9471 |
| Isabs | 5500 | 760% | 0,6911 | 0,0909 |
| Grundname | 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 |
Multi-Funktionen-Benchmark-Ergebnisse:
| Funktion | Stücke Betrag (jeweils 50-100 Pfade) | Mal schneller | Schnellere Betriebssystemzeit | OS -Zeit |
|---|---|---|---|---|
| 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 |
Wir empfehlen, multi-functions zu verwenden, wenn das gegebene Iterable über mehr als 250 Elemente verfügt. Für kleinere Listen ist die Verwendung von multi-functions unwirksam.
# 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
Klon das Repository: git clone https://github.com/American-Best-Technologies-Company/faster-os.git
Führen Sie python3 setup.py build_ext
Erledigt! Überprüfen Sie die Installation: import faster_os
Wenn die angegebenen Argumente gültig sind, funktioniert schnelleres Betriebssystem absolut genauso wie das Betriebssystemmodul. Wenn Sie ein schnelleres Betriebssystem auf einem gültigen Pfad verwenden, funktioniert es genau wie das Betriebssystemmodul .
Wenn Sie einen ungültigen Pfad als Argument für schnellere Betriebssystemfunktionen übergeben, entsprechen die meisten Ausnahmen, die von dem von dem OS -Modul angesprochen werden.
In diesem Fall sind beispielsweise die von Betriebssystem und schnelleren Betriebssystem ausgelösten Ausnahmen gleich :
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 foundAber manchmal können Ausnahmen, die angesprochen werden, unterschiedlich sein :
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'Der Hauptgrund dafür ist das Hauptziel eines schnelleren Betriebssystems: Geschwindigkeit.
Durch das Hinzufügen von Typen und Pfaden die Gültigkeitsprüfungen verlangsamen das schnellere Betriebssystem erheblich. Im Moment planen wir nicht, den schnelleren Betriebssystemfunktionen irgendwelche Typprüfungen oder eine Validierung hinzuzufügen . Aus diesem Grund sind die Ausnahmen möglicherweise nicht so lesbar oder leicht zu verstehen.
Derzeit unterstützt schnelleres Betriebssystem nur str . bytes -Unterstützung wird in den nächsten Updates hinzugefügt. Vielleicht wird sogar os.PathLike Objekt in den nächsten Veröffentlichungen unterstützt.
Python 3
C Build -Werkzeuge:
Für Windows: Lassen Sie Visual Studio installieren
Für UNIX: GCC (wahrscheinlich bereits installiert)
Für macOS: Lassen Sie Xcode CMD -Tools installiert (Geben Sie gcc in der Klemme an, um zu überprüfen, ob es installiert ist).
Schnelleres Betriebssystem ist unter Mozilla Public Lizenz 2.0 lizenziert. Dies bedeutet, dass Sie es in kommerziellen/proprietären Projekten mit geschlossenem Quellcode verwenden können. Sie müssen den Quellcode nicht offenlegen.
Wir empfehlen, die offizielle Dokumentation des Betriebssystemmoduls zu lesen, da alle schnelleren OS -Funktionen "Verhalten" aus den Betriebssystemfunktionen "widerspiegelt" werden. Im Folgenden finden Sie eine kurze Dokumentation zu allen schnelleren Betriebssystemfunktionen.
faster_os.path.normpath(path: str) -> str
Normalisiert den Pfad: Ersetzt '/' an '' unter Windows (oder das Gegenteil auf Unix) und führt andere Änderungen mit '.' Und '..'.
faster_os.path.normcase(path: str) -> str
Senkt den Pfad ( str.lower ) und ersetzt '/' auf Windows (oder das Gegenteil auf Unix).
faster_os.path.split(path: str) -> tuple
Gibt ein Tupel mit dem in den Verzeichnisnamen und im Basisnamen aufgeteilten Pfad zurück:
Beispiel: 'Einige/Beispiel/Path' -> ('Einige/Beispiel', 'Path')
faster_os.path.splitdrive(path: str) -> tuple
Macht nur an Windows sinnvoll: teilt den Pfad in das Laufwerk und den Pfad.
Beispiel: 'C:\Windows' -> ('C:', '\Windows')
faster_os.path.isabs(path: str) -> cython.bint
Überprüft, ob ein Pfad absolut ist.
Beispiel:
'C:\some absolute\path' -> True
'some\relative\path\' -> False
faster_os.path.join(path: str, *paths) -> str
Verbindet alle angegebenen Pfade mit Plattform Delimiter ('/' oder '').
Beispiel:
faster_os.path.('C:\', 'some', 'path') -> 'C:\some\path'
faster_os.path.splitext(path: str) -> tuple
Teilt den Pfad in den Weg und die Erweiterung.
Beispiel:
'a photo.jpg' -> ('a photo', '.jpg')
faster_os.path.basename(path: str) -> str
Gibt den Grundnamen eines Pfades zurück.
'C:\some absolute\path' -> 'path'
faster_os.path.dirname(path: str) -> str
Gibt den Verzeichnisnamen eines Pfades zurück.
'C:\some absolute\path' -> 'C:\some absolute\'
faster_os.path.ismount(path: str) -> cython.bint
Überprüft, ob ein Pfad ein Montagepunkt ist.
faster_os.path.expanduser(path: str) -> str
Erweitert das '~' in das Benutzerprofil oder das Heimweg.
Beispiel:
'~Desktop' - > 'C: \ Users \ Desktop
'~ \ Desktop' - > 'C: \ Users \ User \ Desktop
^ ^ notice this slash faster_os.path.relpath(tail: str, root=None) -> str
Berechnet den relativen Pfad des tail je nach root .
Wenn root keine ist, ist es dem aktuellen Arbeitsverzeichnis os.getcwd() zugeordnet.
faster_os.path.commonprefix(paths) -> str
Findet das gemeinsame Präfix der gegebenen Pfade.
Beispiel:
['faster_os/abc', 'faster_os/abcde', 'faster_os/abc123'] -> 'faster_os/abc'
faster_os.path.commonpath(paths) -> str
Findet den gemeinsamen Weg der gegebenen Pfade.
Gegen CommonPrefix ist der gesamte Weg.
Beispiel:
['faster_os/abc', 'faster_os/abcde', 'faster_os/abc123'] -> 'faster_os'
faster_os.path.abspath(path: str) -> str
Versucht, den absoluten Pfad mit der API des Betriebssystems zu erhalten, oder fällt zurück, um den Pfad mit CWD zu verbinden.
faster_os.path.multi_split(paths) -> list
Nimmt ITerable (Liste, Tupel usw.) und wendet auf jedes Element auf.
Gibt eine Liste zurück.
faster_os.path.multi_normpath(paths) -> list
Nimmt ITerable (Liste, Tupel usw.) und wendet NormPath auf jedes Element an.
Gibt eine Liste zurück.
faster_os.path.multi_normcase(paths) -> list
Nimmt ITerable (Liste, Tupel usw.) und wendet Normcase auf jedes Element an.
Gibt eine Liste zurück.
faster_os.path.multi_splitdrive(paths) -> list
Nimmt ITerable (Liste, Tupel usw.) und wendet SplitDrive auf jedes Element an.
Gibt eine Liste zurück.
faster_os.path.multi_isabs(paths) -> list
Nimmt alle iterablen (Liste, Tupel usw.) und wendet ISABS auf jedes Element an.
Gibt eine Liste zurück.
faster_os.path.multi_join(paths) -> list
Nimmt alle iterablen (Liste, Tupel usw.) und wendet sich zu jedem Element an.
Gibt eine Liste zurück.
faster_os.path.multi_splitext(paths) -> list
Nimmt ITerable (Liste, Tupel usw.) und wendet Splitext auf jedes Element an.
Gibt eine Liste zurück.
faster_os.path.multi_basename(paths) -> list
Nimmt ITerable (Liste, Tupel usw.) und wendet den Grundnamen für jedes Element an.
Gibt eine Liste zurück.
faster_os.path.multi_dirname(paths) -> list
Nimmt eine iterable (Liste, Tupel usw.) und wendet Dirname auf jedes Element an.
Gibt eine Liste zurück.
faster_os.path.multi_relpath(paths) -> list
Nimmt ITerable (Liste, Tupel usw.) und wendet Relpath auf jedes Element an.
Gibt eine Liste zurück.
faster_os.path.multi_expanduser(paths) -> list
Nimmt ITerable (Liste, Tupel usw.) und wendet Erweiterung auf jedes Element an.
Gibt eine Liste zurück.
faster_os.path.multi_ismount(paths) -> list
Nimmt ITerable (Liste, Tupel usw.) und wendet Ismount auf jedes Element an.
Gibt eine Liste zurück.
faster_os.path.multi_abspath(paths) -> list
Nimmt ITerable (Liste, Tupel usw.) und wendet Abspath auf jedes Element an.
Gibt eine Liste zurück.
faster_os.path.multi_commonprefix(paths) -> list
Nimmt eine iterable (Liste, Tupel usw.) und wendet CommonPrefix auf jedes Element an.
Gibt eine Liste zurück.
faster_os.path.multi_commonpath(paths) -> list
Nimmt eine iterable (Liste, Tupel usw.) und wendet für jedes Element den gemeinsamen Pfosten an.
Gibt eine Liste zurück.
faster_os.removedirs(path) -> None
Löscht alle Pfadkomponenten, bis die Ausnahme erhöht ist.
removedirs wird versucht, jedes Verzeichnis zu löschen, bis der Fehler erhöht wird. Beispielsweise ist ein Verzeichnis nicht leer oder es gibt einen Berechtigungsfehler: Zum Beispiel:
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
Nimmt eine iterable (Liste, Tupel usw.) und wendet removedirs auf jedes Element an.