Le système d'exploitation plus rapide est un remplacement sans rendez-vous pour le module «OS» standard de Python. Faster OS propose 32 fonctions entièrement réprimées, optimisées et accélérées, qui remplacent celles du module os.path .
Grâce à un système d'exploitation plus rapide, vous pouvez traiter 1 400 000 chemins en seulement une minute , tandis que cela prendrait plus d'une heure avec un module OS.
# Use Faster OS to save hours of processing time!
# The only thing you need to do is write...
import faster_os as os Rapide. Optimisé. A 0 dépendances. Lumière.
Le système d'exploitation plus rapide est utilisé dans:
MYQUICKMAC NEO - Un programme révolutionnaire pour les soins alimentés par AI de votre Mac - www.ambeteco.com/myquickmac-neo
MyQuckmac Lite - Un programme innovant pour la gestion des fichiers de l'IA - www.ambeco.com/myquickmac-lite
4-Organizer Ultra - Un programme puissant pour débrouiller automatiquement votre PC Windows, alimenté par AI - www.ambeteco.com/4-organizer-ultra
4-Organizer Nano - Riche automatiquement votre PC et met fin au chaos infini de fichiers - www.ambeteco.com/4-organizer nano
Wiper AI - en cours de développement, disponible bientôt
Le système d'exploitation plus rapide est un outil stable prêt pour la production.
En moyenne, une fonction OS plus rapide est 1504% plus rapide qu'une fonction originale du module OS.
Les fonctions les plus utilisées ( split , join , splitext ) sont en moyenne 1215% plus rapidement :
| Nom | Fois plus rapide | OS plus rapide: processus 1 000 000 chemins | OS: Processus 1 000 000 chemins |
|---|---|---|---|
join | 1530% | 14 secondes | 3 minutes 20 secondes |
splitext | 1059% | 8 secondes | 1 minute 33 secondes |
split | 1190% | 18 secondes | 4 minutes 43 secondes |
Résultats de référence complets:
| Fonction | Montant des chemins | Fois plus rapide | Temps de l'os | Temps d'OS plus rapide |
|---|---|---|---|---|
| diviser | 5500 | 1105% | 0,8109 | 0,0733 |
| scinder | 5500 | 445% | 0,3849 | 0,0864 |
| norme | 5500 | 313% | 0.1608 | 0,0513 |
| splitext | 5500 | 938% | 0,5017 | 0,0535 |
| rejoindre | 5000 | 1442% | 1.4388 | 0,0997 |
| relpath | 5500 | 3653% | 12.1418 | 0,3323 |
| ismount | 5500 | 3620% | 71.5931 | 1.9776 |
| norme | 6500 | 326% | 1.9621 | 0,6026 |
| élargir | 5500 | 493% | 0,1539 | 0,0312 |
| abspape | 5500 | 180% | 3,5075 | 1.9471 |
| ISAB | 5500 | 760% | 0,6911 | 0,0909 |
| nom de base | 5500 | 1217% | 0,8403 | 0,0690 |
| dirname | 5500 | 1236% | 0,8473 | 0,0685 |
| chemin de commun | 5000 | 738% | 4.4296 | 0,5998 |
| CommonPrefix | 5000 | 356% | 0,9480 | 0,2661 |
Résultats de référence multifonctions:
| Fonction | Montant des morceaux (chacun 50 à 100 chemins) | Fois plus rapide | Temps d'OS plus rapide | Temps de l'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_isab | 4500 | 1023% | 0,0539 | 0,5514 |
| multi_splitext | 4500 | 1282% | 0,0318 | 0,4077 |
| multi_join | 1000 | 1418% | 0,0204 | 0,2902 |
Nous vous recommandons d'utiliser multi-functions lorsque l'itérable donné compte plus de 250 éléments. Pour les petites listes, l'utilisation multi-functions est inefficace.
# 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
Clone The Repository: git clone https://github.com/American-Best-Technologies-Company/faster-os.git
Exécuter python3 setup.py build_ext
Fait! Vérifiez l'installation: import faster_os
Si les arguments donnés sont valides, le système d'exploitation plus rapide fonctionne absolument de la même manière que le module OS. Cela signifie que si vous utilisez un système d'exploitation plus rapide sur n'importe quel chemin valide, il fonctionnera exactement comme le module OS .
Si vous passez un chemin non valide comme un argument aux fonctions du système d'exploitation plus rapides, la plupart des exceptions soulevées par cela ne correspondront pas à celles soulevées par le module OS.
Par exemple, dans ce cas, les exceptions soulevées par le système d'exploitation et le système d'exploitation plus rapide sont les mêmes :
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 foundMais parfois, les exceptions soulevées peuvent être différentes :
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'La raison principale en est l'objectif principal d'un système d'exploitation plus rapide: la vitesse.
L'ajout de vérifications de validité de type et de chemin ralentira considérablement le système d'exploitation plus rapide. À l'heure actuelle, nous n'avons pas prévu d'ajouter de vérifications de type ou de validation aux fonctions OS plus rapides. Pour cette raison, les exceptions ne peuvent pas être si lisibles par l'homme ou faciles à comprendre.
Actuellement, le système d'exploitation plus rapide ne prend en charge que str . La prise en charge bytes sera ajoutée dans les prochaines mises à jour. Peut-être que même un objet os.PathLike sera pris en charge dans les prochaines versions.
Python 3
C Outils de construction:
Pour Windows: Visual Studio installé
Pour Unix: GCC (probablement déjà installé)
Pour macOS: Ayez installé des outils CMD Xcode (tapez gcc dans le terminal pour vérifier s'il est installé)
Le système d'exploitation plus rapide est sous licence de Mozilla Public License 2.0. Cela signifie que vous pouvez l'utiliser dans des projets commerciaux / propriétaires, avec un code source fermé. Vous n'avez pas besoin de divulguer le code source.
Nous vous recommandons de lire la documentation officielle du module OS, car tous les comportements des fonctions du système d'exploitation plus rapides sont «reflétés» à partir des fonctions du système d'exploitation. Ci-dessous, vous pouvez trouver une courte documentation sur toutes les fonctions du système d'exploitation plus rapides.
faster_os.path.normpath(path: str) -> str
Normalise le chemin: remplace «/« vers »sur Windows (ou le contraire sur Unix), et apporte d'autres modifications liées à« ». et '..'.
faster_os.path.normcase(path: str) -> str
Abaisse le chemin ( str.lower ) et remplace '/' à '' sur Windows (ou le contraire sur Unix).
faster_os.path.split(path: str) -> tuple
Renvoie un tuple avec le chemin divisé en nom de répertoire et nom de base:
Exemple: «Some / Exemple / Path» -> («Some / Exemple», «Path»)
faster_os.path.splitdrive(path: str) -> tuple
Il n'a de sens que sur les fenêtres: divise le chemin dans le lecteur et le chemin.
Exemple: 'C:\Windows' -> ('C:', '\Windows')
faster_os.path.isabs(path: str) -> cython.bint
Vérifie si un chemin est absolu.
Exemple:
'C:\some absolute\path' -> True
'some\relative\path\' -> False
faster_os.path.join(path: str, *paths) -> str
Rejoint tous les chemins donnés à l'aide de Platform Delimiter ('/' ou '').
Exemple:
faster_os.path.('C:\', 'some', 'path') -> 'C:\some\path'
faster_os.path.splitext(path: str) -> tuple
Fruit le chemin dans le chemin et l'extension.
Exemple:
'a photo.jpg' -> ('a photo', '.jpg')
faster_os.path.basename(path: str) -> str
Renvoie le nom de base d'un chemin.
'C:\some absolute\path' -> 'path'
faster_os.path.dirname(path: str) -> str
Renvoie le nom du répertoire d'un chemin.
'C:\some absolute\path' -> 'C:\some absolute\'
faster_os.path.ismount(path: str) -> cython.bint
Vérifie si un chemin est un point de montage.
faster_os.path.expanduser(path: str) -> str
Élargit le '~' dans le profil utilisateur ou le chemin d'accueil.
Exemple:
'~Desktop' - > 'C: \ Users \ Desktop
'~ \ Desktop' - > 'C: \ Users \ User \ Desktop
^ ^ notice this slash faster_os.path.relpath(tail: str, root=None) -> str
Calcule le chemin relatif de la tail en fonction de la root .
Si root n'est pas un, il est affecté au répertoire de travail actuel os.getcwd() .
faster_os.path.commonprefix(paths) -> str
Trouve le préfixe commun des chemins donnés.
Exemple:
['faster_os/abc', 'faster_os/abcde', 'faster_os/abc123'] -> 'faster_os/abc'
faster_os.path.commonpath(paths) -> str
Trouve le chemin commun des chemins donnés.
Contrat à CommonPrefix, trouve le chemin complet.
Exemple:
['faster_os/abc', 'faster_os/abcde', 'faster_os/abc123'] -> 'faster_os'
faster_os.path.abspath(path: str) -> str
Essaie d'obtenir le chemin absolu à l'aide de l'API du système d'exploitation, ou retombe pour rejoindre le chemin avec CWD.
faster_os.path.multi_split(paths) -> list
Prend n'importe quel itérable (liste, tuple, etc.) et s'applique à chaque élément.
Renvoie une liste.
faster_os.path.multi_normpath(paths) -> list
Prend n'importe quelle itérable (liste, tuple, etc.) et applique Normpath à chaque élément.
Renvoie une liste.
faster_os.path.multi_normcase(paths) -> list
Prend n'importe quel itérable (liste, tuple, etc.) et applique Normcase à chaque élément.
Renvoie une liste.
faster_os.path.multi_splitdrive(paths) -> list
Prend n'importe quelle itérable (liste, tuple, etc.) et applique Splitdrive à chaque élément.
Renvoie une liste.
faster_os.path.multi_isabs(paths) -> list
Prend n'importe quel itérable (liste, tuple, etc.) et applique des ISAB à chaque élément.
Renvoie une liste.
faster_os.path.multi_join(paths) -> list
Prend n'importe quelle itérable (liste, tuple, etc.) et s'applique à chaque élément.
Renvoie une liste.
faster_os.path.multi_splitext(paths) -> list
Prend n'importe quel itérable (liste, tuple, etc.) et applique Splitext à chaque élément.
Renvoie une liste.
faster_os.path.multi_basename(paths) -> list
Prend n'importe quel itérable (liste, tuple, etc.) et applique le nom de base à chaque élément.
Renvoie une liste.
faster_os.path.multi_dirname(paths) -> list
Prend n'importe quel itérable (liste, tuple, etc.) et applique dirname à chaque élément.
Renvoie une liste.
faster_os.path.multi_relpath(paths) -> list
Prend n'importe quelle itérable (liste, tuple, etc.) et applique Relpath à chaque élément.
Renvoie une liste.
faster_os.path.multi_expanduser(paths) -> list
Prend n'importe quelle itérable (liste, tuple, etc.) et s'applique à l'étendue à chaque élément.
Renvoie une liste.
faster_os.path.multi_ismount(paths) -> list
Prend n'importe quel itérable (liste, tuple, etc.) et s'applique à chaque élément.
Renvoie une liste.
faster_os.path.multi_abspath(paths) -> list
Prend n'importe quelle itérable (liste, tuple, etc.) et applique l'abspath à chaque élément.
Renvoie une liste.
faster_os.path.multi_commonprefix(paths) -> list
Prend n'importe quelle itérable (liste, tuple, etc.) et applique CommonPrefix à chaque élément.
Renvoie une liste.
faster_os.path.multi_commonpath(paths) -> list
Prend n'importe quelle itérable (liste, tuple, etc.) et applique CommonPath à chaque élément.
Renvoie une liste.
faster_os.removedirs(path) -> None
Supprime tous les composants du chemin jusqu'à ce que l'exception soit augmentée.
removedirs essaiera de supprimer chaque répertoire jusqu'à ce que l'erreur soit augmentée, par exemple, un répertoire n'est pas vide ou qu'il y a une erreur d'autorisation: par exemple:
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
Prend n'importe quelle itérable (liste, tuple, etc.) et applique removedirs à chaque élément.