O que é o módulo OS do Python e como usá-lo?
O módulo OS em Python fornece acesso a funções específicas do sistema para lidar com o sistema de arquivos, processos, planejador, etc. Você precisa dominar o sistema Python OS para escrever aplicativos que lidam com problemas do mundo real. Este guia discute alguns dos principais conceitos e ilustra como usar o comando do sistema Python.
Recursos do sistema Python OS
O sistema operacional funciona como uma forma portátil de interagir com o sistema operacional subjacente. Ele oferece acesso a nomes de arquivos, argumentos de linha de comando, variáveis de ambiente, parâmetros de processo e hierarquia do sistema de arquivos junto com outras funcionalidades.
Este módulo também contém dois submódulos, o módulo os.sys e o módulo os.path. Você pode usar as funções fornecidas pelo módulo OS para realizar uma ampla variedade de tarefas. Alguns usos comuns incluem a execução de comandos shell, gerenciamento de arquivos e diretórios, processos de geração , etc.
Primeiros passos com o módulo OS
A maneira mais fácil de explorar o módulo OS é por meio do interpretador. Você pode importar o módulo para lá e usar as funções do sistema sem escrever o código-fonte. Você precisa ter o Python instalado para isso, no entanto. Então vá em frente e instale o Python em sua máquina local.
Inicie o interpretador digitando python em seu terminal ou shell de comando. Depois de aberto, importe o módulo OS usando a seguinte instrução.
>>> import os
Agora você pode acessar as funcionalidades fornecidas pelo módulo OS, incluindo o comando do sistema Python. Por exemplo, você pode determinar a plataforma do sistema usando o comando name . O exemplo a seguir mostra como invocar comandos do sistema expostos pelo módulo OS.
>>> os.name
Esta função verifica se certos módulos específicos do sistema operacional estão presentes e determina a plataforma com base nisso. Use a função uname para obter informações detalhadas.
>>> os.uname()
Este comando exibe a plataforma exata do sistema ao lado da arquitetura da máquina, liberação e informações de versão. Use a função getcwd para recuperar o diretório de trabalho atual.
>>> os.getcwd()
Você pode alterar facilmente o diretório de trabalho usando o comando do sistema Python chdir . Passe o novo local como um parâmetro de string.
>>> os.chdir('/tmp')
A função mkdir do módulo OS simplifica a criação de novos diretórios. Também nos permite criar pastas recursivas, o que significa que o Python criará todos os diretórios ausentes que são pais do diretório folha.
>>> os.mkdir('new-dir')
Use o comando rmdir para excluir diretórios de seu diretório de trabalho.
>>> os.rmdir('new-dir')
Exemplos de comando do sistema Python
O comando do sistema fornecido pelo módulo OS permite que os programadores executem comandos shell. Certifique-se de definir o nome do comando como uma string. Depois de chamar o comando do sistema python, ele executará o comando fornecido em um novo subshell.
>>> cmd = 'date'
>>> os.system(cmd)
Você pode executar outros aplicativos independentes usando este mesmo método. O exemplo a seguir executa o editor de terminal nano de seu shell Python.
>>> cmd = 'nano'
>>> os.system(cmd)
O sistema Python OS também exibe o código de retorno para cada comando executado. Os sistemas POSIX retornam 0 para execução bem-sucedida e valores diferentes de zero para indicar problemas.
Você pode usar o sistema operacional em Python para executar o que quiser. Por exemplo, se seu programa precisa ler as informações de versão de um programa na máquina do usuário, você pode fazer algo como o seguinte.
>>> cmd = 'gcc --version'
>>> os.system(cmd)
O exemplo a seguir executa um comando shell simples que cria um novo arquivo chamado users.txt e o preenche com todos os usuários logados. Muitos programas Python fazem essas coisas.
>>> os.system('users > test')
Estamos passando o nome do comando para o sistema OS como uma string. Você pode usar todos os tipos de comandos de terminal úteis da mesma maneira.
>>> os.system('ping -c 3 google.com')
Você também pode usar chamadas de subprocesso para executar comandos do sistema em Python. Isso fornece vários benefícios adicionais, incluindo tempo de execução mais rápido, melhor tratamento de erros, análise de saída e comandos shell de tubulação. A documentação oficial do Python também recomenda a chamada de subprocesso em vez de módulos mais antigos, como os.system e os.spawn .
>>> import subprocess
>>> subprocess.run(["ping","-c 3", "example.com"])
Gerenciando arquivos e diretórios por meio do módulo de sistema operacional
Mostramos como criar arquivos e diretórios simples usando o módulo Python OS. E se você quiser criar pastas aninhadas? O sistema operacional também cuida disso para nós, programadores. Por exemplo, os snippets abaixo criam a pasta $ HOME / test / root / api . Ele também criará os diretórios pai necessários, se eles não estiverem disponíveis.
>>> dirname = os.path.join(os.environ['HOME'], 'test', 'root', 'api')
>>> print(dirname)
>>> os.makedirs(dirname)
Primeiro, recuperamos o diretório inicial usando o ambiente e, em seguida, juntamos os nomes das pastas por meio de os.path.join . A instrução de impressão exibe o nome da pasta e makedirs a cria.
Podemos visualizar o novo diretório usando o método listdir do módulo OS.
>>> os.chdir(os.path.join(os.environ['HOME'], 'test', 'root', 'api'))
>>> os.system('touch file1 file2 file3')
>>> os.listdir(os.environ['HOME'])
Você pode renomear facilmente o diretório api usando o comando rename oferecido pelo módulo OS. A instrução a seguir renomeia este diretório api para test-api.
>>> os.rename('api', 'test-api')
Use a função isfile e isDir da OS se seu programa necessita de arquivos específicos validar ou diretórios.
>>> os.path.isfile('file1')
>>> os.path.isdir('file1')
O módulo OS em Python também permite que os desenvolvedores extraiam nomes de arquivos e pastas junto com extensões de arquivo. Os snippets a seguir ilustram o uso de os.path.split e os.path.splitext a esse respeito.
>>> dir = os.path.join(os.environ['HOME'], 'test', 'root', 'api', 'file1.txt')
>>> dirname, basename = os.path.split(dir)
>>> print(dirname)
>>> print(basename)
Use o código abaixo para extrair extensões como .txt ou .mp3 de nomes de arquivos.
>>> filename, extension = os.path.splitext(basename)
>>> print(filename)
>>> print(extension)
Uso diverso do sistema Python OS
O módulo OS oferece muitas funções adicionais para manipular coisas como processos do usuário e o agendador de tarefas. Por exemplo, você pode obter rapidamente o UID (id do usuário) do processo atual usando a função getuid .
>>> os.getuid()
>>> os.getgid()
A função getgid retorna o id do grupo do processo em execução. Use getpid para obter o PID (id do processo) e getppid para obter o id do processo pai.
>>> os.getpid()
>>> os.getppid()
Você também pode usar o módulo OS para alterar as permissões de arquivos e diretórios do seu programa Python. Use a função chmod do OS para fazer isso.
>>> os.chmod('file1.txt', 0o444)
Este comando altera a permissão de file1.txt para 0444 . Use 0o444 em vez de 0444 para garantir que a instrução seja compatível com as duas versões principais do Python.
Aproveite o poder do sistema Python OS
O módulo OS do Python fornece tudo que você precisa para interagir com o sistema operacional subjacente. Um entendimento claro do sistema OS é necessário para escrever programas verdadeiramente multiplataforma. Cobrimos algumas das principais funcionalidades fornecidas por este módulo para ajudá-lo a começar. Experimente no seu próprio ritmo e não se esqueça de mexer neles.