OS mais rápido é um substituto do módulo 'OS' padrão do Python. O sistema operacional mais rápido oferece 32 funções totalmente re-gravadas, otimizadas e aceleradas, que substituem as do módulo os.path .
Graças ao sistema operacional mais rápido, você pode processar 1.400.000 caminhos em apenas um minuto , enquanto levaria mais de uma hora com um módulo SO.
# Use Faster OS to save hours of processing time!
# The only thing you need to do is write...
import faster_os as os Rápido. Otimizado. Tem 0 dependências. Luz.
OS mais rápido é usado em:
MyQuickMac Neo - Um programa revolucionário para cuidados com a IA do seu Mac - www.ambeteco.com/myquickmac-neo
Myquickmac Lite - Um programa inovador para gerenciamento de arquivos AI - www.ambeteco.com/myquickmac-lite
4-Organizer Ultra -Um programa poderoso para organizar automaticamente seu PC Windows, alimentado por AI-www.ambeteco.com/4-organizer-ultra
Nano de 4 organizadores -cria automaticamente o seu PC e termina o fim do caos infinito de arquivos-www.ambeteco.com/4-organizer-nano
Wiper AI - em desenvolvimento, disponível em breve
OS mais rápido é uma ferramenta estável e pronta para produção.
Em média, uma função mais rápida do sistema operacional é 1504% mais rápida que uma função original do módulo OS.
As funções mais usadas ( split , join , splitext ) são, em média , 1215% mais rápidas :
| Nome | Vezes mais rápido | OS mais rápido: Processe 1.000.000 de caminhos | OS: Processe 1.000.000 de caminhos |
|---|---|---|---|
join | 1530% | 14 segundos | 3 minutos 20 segundos |
splitext | 1059% | 8 segundos | 1 minuto 33 segundos |
split | 1190% | 18 segundos | 4 minutos 43 segundos |
Resultados completos de referência:
| Função | Valores de caminhos | Vezes mais rápido | Tempo do sistema operacional | Tempo mais rápido do sistema operacional |
|---|---|---|---|---|
| dividir | 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 |
| juntar | 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 |
| Expanduser | 5500 | 493% | 0,1539 | 0,0312 |
| Abspath | 5500 | 180% | 3.5075 | 1.9471 |
| isabs | 5500 | 760% | 0.6911 | 0,0909 |
| nome de base | 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 |
Resultados de referência de várias funções:
| Função | Quantidade de pedaços (cada um de 50 a 100 caminhos) | Vezes mais rápido | Tempo mais rápido do sistema operacional | Tempo do sistema operacional |
|---|---|---|---|---|
| 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 |
Recomendamos o uso de multi-functions quando o iterable dado tem mais de 250 elementos. Para listas menores, o uso de multi-functions é ineficaz.
# 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 o repositório: git clone https://github.com/American-Best-Technologies-Company/faster-os.git
Execute python3 setup.py build_ext
Feito! Verifique a instalação: import faster_os
Se os argumentos fornecidos forem válidos, o sistema operacional mais rápido funcionará absolutamente da mesma maneira que o módulo OS. Isso significa que, se você usar o sistema operacional mais rápido em qualquer caminho válido, ele funcionará exatamente como o módulo OS .
Se você passará algum caminho inválido como um argumento para as funções mais rápidas do sistema operacional, a maioria das exceções levantadas por ele não corresponderá às levantadas pelo módulo OS.
Por exemplo, neste caso, as exceções levantadas pelo sistema operacional e mais rápido são as mesmas :
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 foundMas às vezes, as exceções levantadas podem ser diferentes :
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'A principal razão para isso é o principal objetivo do sistema operacional mais rápido: velocidade.
A adição de verificações de validade de tipo e caminhos diminuirá significativamente o sistema operacional mais rápido. No momento, não planejamos adicionar verificações de tipo ou alguma validação às funções mais rápidas do sistema operacional. Por esse motivo, as exceções podem não ser tão legíveis ou fáceis de entender.
Atualmente, o sistema operacional mais rápido suporta apenas str . O suporte bytes será adicionado nas próximas atualizações. Talvez até o objeto os.PathLike seja suportado nos próximos lançamentos.
Python 3
C Ferramentas de construção:
Para Windows: tenha o Visual Studio instalado
Para Unix: GCC (provavelmente já instalado)
Para MacOS: tenha as ferramentas Xcode CMD instaladas (digite gcc no terminal para verificar se está instalado)
O sistema operacional mais rápido é licenciado sob a licença pública de Mozilla 2.0. Isso significa que você pode usá -lo em projetos comerciais/proprietários, com código de fonte fechado. Você não precisa divulgar o código -fonte.
Recomendamos a leitura da documentação oficial do módulo do SO, pois todas as funções mais rápidas do sistema operacional são "espelhadas" das funções do sistema operacional. Abaixo, você pode encontrar uma curta documentação em todas as funções mais rápidas do sistema operacional.
faster_os.path.normpath(path: str) -> str
Normaliza o caminho: substitui '/' para '' no Windows (ou o oposto no UNIX) e faz outras alterações relacionadas a ''. e '..'.
faster_os.path.normcase(path: str) -> str
Reduz o caminho ( str.lower ) e substitui '/' para '' no Windows (ou o oposto no Unix).
faster_os.path.split(path: str) -> tuple
Retorna uma tupla com o caminho dividido no nome do diretório e no nome da base:
Exemplo: 'Alguns/Exemplo/Path' -> ('Some/Exemplo', 'Path')
faster_os.path.splitdrive(path: str) -> tuple
Só faz sentido nas janelas: divide o caminho para a unidade e o caminho.
Exemplo: 'C:\Windows' -> ('C:', '\Windows')
faster_os.path.isabs(path: str) -> cython.bint
Verifica se um caminho é absoluto.
Exemplo:
'C:\some absolute\path' -> True
'some\relative\path\' -> False
faster_os.path.join(path: str, *paths) -> str
Junta -se a todos os caminhos fornecidos usando o delimitador da plataforma ('/' ou '').
Exemplo:
faster_os.path.('C:\', 'some', 'path') -> 'C:\some\path'
faster_os.path.splitext(path: str) -> tuple
Divide o caminho no caminho e extensão.
Exemplo:
'a photo.jpg' -> ('a photo', '.jpg')
faster_os.path.basename(path: str) -> str
Retorna o nome base de um caminho.
'C:\some absolute\path' -> 'path'
faster_os.path.dirname(path: str) -> str
Retorna o nome do diretório de um caminho.
'C:\some absolute\path' -> 'C:\some absolute\'
faster_os.path.ismount(path: str) -> cython.bint
Verifica se um caminho é um ponto de montagem.
faster_os.path.expanduser(path: str) -> str
Expande o '~' para o perfil de usuário ou o caminho da casa.
Exemplo:
'~Desktop' - > 'C: \ Users \ Desktop
'~ \ Desktop' - > 'C: \ Users \ User \ Desktop
^ ^ notice this slash faster_os.path.relpath(tail: str, root=None) -> str
Calcula o caminho relativo da tail , dependendo da root .
Se root não for, é atribuído ao diretório de trabalho atual os.getcwd() .
faster_os.path.commonprefix(paths) -> str
Encontra o prefixo comum de caminhos determinados.
Exemplo:
['faster_os/abc', 'faster_os/abcde', 'faster_os/abc123'] -> 'faster_os/abc'
faster_os.path.commonpath(paths) -> str
Encontra o caminho comum dos caminhos determinados.
Contrato ao CommonPrefix, encontra o caminho completo.
Exemplo:
['faster_os/abc', 'faster_os/abcde', 'faster_os/abc123'] -> 'faster_os'
faster_os.path.abspath(path: str) -> str
Tenta obter o caminho absoluto usando a API do sistema operacional ou volta a se juntar ao caminho com a CWD.
faster_os.path.multi_split(paths) -> list
Pega qualquer iterável (lista, tupla, etc) e aplica dividido a cada elemento.
Retorna uma lista.
faster_os.path.multi_normpath(paths) -> list
Pega qualquer iterável (lista, tupla, etc) e aplica o NormPath a cada elemento.
Retorna uma lista.
faster_os.path.multi_normcase(paths) -> list
Pega qualquer itemerável (lista, tupla, etc.) e aplica a NormCase a cada elemento.
Retorna uma lista.
faster_os.path.multi_splitdrive(paths) -> list
Pega qualquer iterável (lista, tupla, etc) e aplica o SplitDrive a cada elemento.
Retorna uma lista.
faster_os.path.multi_isabs(paths) -> list
Pega qualquer iterável (lista, tupla, etc) e aplica ISABs a cada elemento.
Retorna uma lista.
faster_os.path.multi_join(paths) -> list
Pega qualquer itemerável (lista, tupla, etc.) e aplica -se a se unir a cada elemento.
Retorna uma lista.
faster_os.path.multi_splitext(paths) -> list
Pega qualquer iterável (lista, tupla, etc) e aplica Splitext a cada elemento.
Retorna uma lista.
faster_os.path.multi_basename(paths) -> list
Pega qualquer itemerável (lista, tupla, etc.) e aplica o nome de base a cada elemento.
Retorna uma lista.
faster_os.path.multi_dirname(paths) -> list
Pega qualquer itemerável (lista, tupla, etc.) e aplica o Dirname a cada elemento.
Retorna uma lista.
faster_os.path.multi_relpath(paths) -> list
Pega qualquer itemerável (lista, tupla, etc.) e aplica o Relpath a cada elemento.
Retorna uma lista.
faster_os.path.multi_expanduser(paths) -> list
Pega qualquer itemerável (lista, tupla, etc.) e aplica expansor a cada elemento.
Retorna uma lista.
faster_os.path.multi_ismount(paths) -> list
Pega qualquer itemerável (lista, tupla, etc) e aplica ismount a cada elemento.
Retorna uma lista.
faster_os.path.multi_abspath(paths) -> list
Pega qualquer itemerável (lista, tupla, etc) e aplica o absorto a cada elemento.
Retorna uma lista.
faster_os.path.multi_commonprefix(paths) -> list
Pega qualquer itemerável (lista, tupla, etc) e aplica o CommonPrefix a cada elemento.
Retorna uma lista.
faster_os.path.multi_commonpath(paths) -> list
Pega qualquer iterável (lista, tupla, etc) e aplica o CommonPath a cada elemento.
Retorna uma lista.
faster_os.removedirs(path) -> None
Exclui todos os componentes do caminho até que a exceção seja levantada.
removedirs tentará excluir cada diretório até que o erro seja levantado, por exemplo, um diretório não está vazio ou há um erro de permissão: por exemplo:
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
Pega qualquer iterável (lista, tupla, etc.) e aplica removedirs a cada elemento.