Black Friday Cripto

import os

Isso lhe dará acesso a todas as funções definidas no os módulo.

💡 Dica: este módulo já estava instalado quando você instalou o Python 3, então você poderá usá-lo imediatamente.

Para poder usar as funções do os módulo, você precisará adicionar o prefixo os. antes do nome da função que você deseja chamar, assim:

os.()

Por exemplo:

os.mkdir("New Folder")

Como importar funções individuais

Se você estiver trabalhando apenas com uma ou duas funções do módulo, poderá importá-las individualmente usando esta sintaxe:

from  import , , ...

Por exemplo:

from os import listdir, system

Nesse caso, você pode chamar as funções em seu script como faria normalmente, sem adicionando o os. prefixo, assim:

()

Por exemplo:

mkdir("New Folder")

Directory Diretório de trabalho atual

Agora vamos ver um conceito muito importante que você precisa conhecer antes de começar a trabalhar com listdir e system. Seu diretório de trabalho atual, como o nome indica, é o diretório (pasta) em que você está trabalhando no momento.

Você pode verificar seu diretório de trabalho atual com esta função no os módulo:

os.getcwd()

Isso mostrará o caminho para o seu diretório de trabalho atual.

💡 Dica: cwd significa “diretório de trabalho atual”.

Do Shell Interativo

Se eu executar este comando no shell interativo (Windows), vejo o seguinte:

>>> os.getcwd()'C:\Users\estef\AppData\Local\Programs\Python\Python38-32'

Este é o caminho completo para o meu diretório de trabalho atual:

'C:\Users\estef\AppData\Local\Programs\Python\Python38-32'

De um script

Se eu executar este comando a partir de um script, desta forma:

import osprint(os.getcwd())

Eu vejo:

C:UsersestefDocumentsfreeCodeCampfreeCodeCamp Newslistdir vs system

O caminho completo para o script (sua localização no sistema, na hierarquia de diretórios).

💡 Dica: Se você executar um script (um arquivo Python), seu diretório de trabalho atual será o diretório em que o script está atualmente.

Como alterar seu diretório de trabalho atual

Você pode alterar seu diretório de trabalho atual com este comando no diretório os módulo:

os.chdir()

Você precisará especificar o caminho para o novo diretório de trabalho, transmitindo-o como argumento, formatado como uma sequência. Pode ser um caminho absoluto ou um caminho relativo.

💡 Dica:

  • A caminho absoluto especifica toda a sequência de diretórios que você precisa percorrer para alcançar seu diretório de destino. Esse caminho começa no diretório raiz do seu sistema.

Por exemplo:

>>> import os>>> os.chdir(r"C:UsersestefDocumentsFreeCodeCampfreeCodeCamp News9 - listdir vs system")# Checking current working directory:>>> os.getcwd()'C:\Users\estef\Documents\FreeCodeCamp\freeCodeCamp News\9 - listdir vs system'
jogos em oferta

Observe que eu adicionei um r antes do caminho absoluto para converter a sequência em uma sequência bruta. Se você usar e você não adiciona o r, você receberá um erro porque o O símbolo será tratado como um caractere especial.

Como alternativa, você pode substituir as barras invertidas com barras / no caminho:

>>> os.chdir("C:/Users/estef/Documents/FreeCodeCamp/freeCodeCamp News/9 - listdir vs system")# Checking current working directory>>> os.getcwd()'C:\Users\estef\Documents\FreeCodeCamp\freeCodeCamp News\9 - listdir vs system'

  • UMA caminho relativo especifica o caminho que você deseja seguir para encontrar o diretório de destino, mas agora o caminho começa no seu atual diretório de trabalho. É mais curto e mais simples que o caminho absoluto.

Por exemplo, se seu diretório de trabalho atual contiver um subdiretório (pasta) Directory 1, você pode mover-se para esse diretório usando um caminho relativo (imagine-o como uma pasta dentro de outra pasta, e estamos indo cada vez mais fundo na hierarquia), assim:

>>> import os>>> os.chdir(".Directory 1")# Check current working directory>>> os.getcwd()'C:\Users\estef\Documents\FreeCodeCamp\freeCodeCamp News\9 - listdir vs system\Directory 1'

💡 Dica: O ponto (.) no início do caminho relativo .Directory 1 representa o diretório de trabalho atual. Um ponto duplo ( ..) é usado para mover a hierarquia para o diretório “pai”.

Agora que você tem todo o conhecimento necessário para entender realmente como listdir e system trabalho, vamos vê-los em detalhes.

🔸 Listdir

Vamos começar com o listdir função. Vamos revelar seus mistérios. 🔮

Finalidade e valor de retorno

De acordo com Documentação Python, o objetivo desta função é:

Retorne uma lista contendo os nomes das entradas no diretório fornecido por caminho.

Basicamente, essa função retorna uma lista com os nomes de todos os arquivos e diretórios encontrados atualmente em um diretório específico que você especifica quando chama a função.

💡 Dica: A lista não terá uma ordem específica, mesmo que você ordene os elementos em ordem alfabética.

Sintaxe e Parâmetro

Chamar listdir, precisará usar esta sintaxe:

image 9

O parâmetro path é precisamente isso, o caminho absoluto ou relativo para o diretório que você deseja visualizar. No Python 3.2 e acima, esse parâmetro é opcional. Por padrão, o caminho levará ao seu diretório de trabalho atual se você não passar um argumento.

image 12

Lembre-se de que você deve importar o os módulo antes de chamar esta função.

💡 Dica: Se você usar esta declaração de importação from os import listdir para importar a função individualmente, você pode omitir o os. prefixo, assim:

image 10

Casos de uso e vantagens

A função listdir é muito útil porque funciona em qualquer sistema operacional em que o Python seja executado; portanto, se o Python estiver instalado no seu dispositivo, essa função funcionará corretamente.

Agora vamos falar um pouco sobre seu valor de retorno. Como ele retorna uma lista, podemos armazenar essa lista em uma variável e trabalhar com ela em nosso programa.

Por exemplo, digamos que queremos fazer algo com todos os arquivos de um determinado diretório, como converter imagens em preto e branco ou modificar seu conteúdo. Poderíamos fazer isso usando um loop for, assim:

images = os.listdir()for image in images:	# Do something to the image

Obviamente, você precisaria definir o que acontece dentro do loop, mas este é um exemplo do que você poderia fazer com essa função.

Isso é demais, certo?

Mas ter arquivos e diretórios na mesma lista pode ser um pouco problemático se quisermos trabalhar com um loop for, certo? Nós precisaríamos adicionar um condicional para verificar o tipo de cada elemento. Como podemos fazer uma lista que contém apenas nomes de arquivos (sem diretórios) ou vice-versa?

Vamos ver! ✨

Incluir apenas arquivos

Se você deseja “filtrar” a lista retornada por os.listdir() para incluir apenas arquivos (sem diretórios), você pode usar esta linha de código:

list(filter(os.path.isfile, os.listdir()))

💡 Dica: Você pode personalizar o argumento ou omita-o para usar seu diretório de trabalho atual.

Vamos ver um exemplo com meu diretório de trabalho atual (estou usando o Windows):

image 23

Meu diretório (pasta) possui:

  • Dois subdiretórios (pastas na pasta principal)
  • Um arquivo do PowerPoint
  • Uma imagem (arquivo .png)
  • Um script Python

Se eu ligar para o listdir função do script.py arquivo e imprima a lista retornada:

print(os.listdir())

Esta é a saída:

['Diagrams.ppt', 'Directory 1', 'Directory 2', 'listdir vs system.png', 'script.py']

Você pode ver que todos os arquivos e diretórios do meu diretório de trabalho atual foram incluídos.

Para filtrar a lista para conter apenas arquivos, podemos usar esta instrução:

print(list(filter(os.path.isfile, os.listdir())))

Agora a saída é:

['Diagrams.ppt', 'listdir vs system.png', 'script.py']

Observe como os diretórios foram “filtrados”, exatamente o que queríamos.

Incluir apenas diretórios

Da mesma forma, se você deseja “filtrar” a lista para incluir apenas diretórios, você pode usar esta linha de código:

list(filter(os.path.isdir, os.listdir()))

Agora a saída é:

['Directory 1', 'Directory 2']

Exatamente o que queríamos. Mas como essa declaração funciona nos bastidores? Vamos ver.

Quão filter() Trabalhos nos bastidores

A função de filtro é chamada usando esta sintaxe:

filter(, )

Basicamente, “filtra” os elementos do segundo argumento (a lista) com base no valor de verdade retornado chamando a função passada como o primeiro argumento (os.path.isfile() ou os.path.isdir() em seus respectivos comandos):

print(list(filter(os.path.isfile, os.listdir())))

list(filter(os.path.isdir, os.listdir()))

Estas duas funções:

os.path.isfile()os.path.isdir()

Retorna True se o argumento for um arquivo ou um diretório, respectivamente.

Com base nesses valores verdadeiros, os elementos da lista serão incluídos (ou não) na lista final “filtrada”. Os elementos da lista retornados por os.listdir() são passados ​​um a um para essas funções para verificar se são arquivos (ou diretórios, respectivamente).

Por exemplo: Se tivermos esta linha de código:

filter(os.path.isfile, os.listdir())))

E os.listdir() retorna esta lista:

['Diagrams.ppt', 'Directory 1', 'Directory 2', 'script.py']

O primeiro elemento da lista ('Diagrams.ppt') é passado como argumento para os.path.isfile() para verificar se é um arquivo:

os.path.isfile('Diagrams.ppt') # True

image 30

A chamada de função retorna True, portanto, é um arquivo e é incluído na lista.

Mas se o elemento for um diretório:

os.path.isfile('Directory 1') # False

image 31

A chamada de função retorna False, por isso não está incluído na lista. Esse processo continua para todos os elementos da lista até que a nova lista contenha apenas nomes de arquivos.

Então, desde filter() retorna um iterável, fazemos uma lista a partir de iterável usando list():

list(filter(os.path.isfile, os.listdir()))

E imprimimos, pois estamos trabalhando com um arquivo Python (script):

print(list(filter(os.path.isfile, os.listdir())))

💡 Dica: Você pode identificar visualmente se um elemento da lista representa um arquivo ou um diretório, verificando se ele possui uma extensão (tipo) após seu nome. Por exemplo: Diagrams.ppt tem um .ppt extensão que informa que é um arquivo do PowerPoint, mas que um diretório não possui uma extensão, como 'Directory 1'.

image 32

🔹 Sistema (“ls”)

Agora que você sabe trabalhar com listdir, vamos ver como o system() A função funciona nos bastidores e como você pode usá-la. 🔮

Objetivo

De acordo com Documentação Python, o objetivo do system() função é:

Execute o comando (uma string) em um subshell

Basicamente, essa função pega um comando (como uma string) e o executa.

Nesse caso, o comando que estamos passando é 'ls' , um comando Unix usado no Linux para exibir o conteúdo de um diretório como saída padrão.

Ao contrário listdir, a system() função não retornará uma lista se passarmos o 'ls' comando, ele apenas exibição a lista de arquivos e diretórios como saída padrão. Portanto, você deve usá-lo se desejar apenas visualizar a lista sem realmente trabalhar com ela em seu programa.

Sintaxe e Parâmetro

Para chamar esta função, você precisará usar esta sintaxe:

image 15

Seu único argumento é o comando que você deseja executar formatado como uma string (entre aspas duplas ou aspas simples).

Particularmente, o ls O comando permite ver o conteúdo do seu diretório de trabalho atual.

Por exemplo: se este é meu diretório de trabalho (três arquivos Python e um subdiretório):

image 17

E eu chamo de system() função, assim:

>>> import os>>> os.system("ls")

Esta é a saída:

'Directory 1'  'file 1.py'  'file 2.py'   main.py0

Podemos ver a saída padrão no console (a lista de arquivos e diretórios):

'Directory 1'  'file 1.py'  'file 2.py'   main.py

e o valor de retorno:

0

💡 Nota: Para esses exemplos de system() , estou trabalhando com uma ferramenta de linha de comando online chamada Repl.it, pois meu computador possui o Windows instalado e o comando ls não é reconhecido pelo prompt de comando padrão.

Limitações

Uma das principais limitações desta função é que o comando passado como argumento deve ser reconhecido pelo sistema operacional ou ambiente com o qual você está trabalhando.

Por exemplo, o ls comando não será reconhecido no Windows por padrão no prompt de comando. Você verá esse erro se tentar executá-lo:

‘ls’ não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote.

Um comando semelhante no Windows seria o 'dir' comando:

os.system('dir')

💡 Dica: Existem maneiras alternativas de executar o ls comando no Windows, como o uso de programas de terminal que reconhecem comandos do Unix, mas, por padrão, o Windows não reconhece o comando 'ls' comando.

Valor de retorno

De acordo com Documentação Python:

No Unix, o valor de retorno é o status de saída do processo codificado no formato especificado para wait().

e…

No Windows, o valor retornado é o retornado pelo shell do sistema após a execução comando.

💡 Dica: Observe que esta função não retorna uma lista. Ele simplesmente exibe a lista como saída padrão, para que você não possa armazená-la em uma variável como fez com listdir.

Variações do ls comando

Um recurso importante de os.system('ls') é que ele tem muitas opções úteis e interessantes para personalizar a apresentação da saída. Vamos ver alguns deles.

Opção 1: Podemos mostrar mais informações sobre arquivos e diretórios, como tamanho, local e data e hora da modificação usando o comando ls -l.

>>> import os>>> os.system('ls -l')total 12drwxr-xr-x 1 runner runner  0 Apr  3 18:23 'Directory 1'-rw-r--r-- 1 runner runner 11 Apr  3 18:38 'file 1.py'-rw-r--r-- 1 runner runner 11 Apr  3 18:38 'file 2.py'-rw-r--r-- 1 runner runner 11 Apr  3 18:38  main.py0

Opção 2: Para poder reconhecer diretórios visualmente mais rapidamente, podemos usar ls -F, que adiciona uma barra / até o final de seus nomes (consulte 'Directory 1/' abaixo).

>>> import os>>> os.system('ls -F')'Directory 1'/  'file 1.py'  'file 2.py'   main.py0

Opção 3: Para classificar os arquivos por tamanho, podemos usar o comando ls -lS.

>>> import os>>> os.system('ls -lS')total 12-rw-r--r-- 1 runner runner 11 Apr  3 18:38 'file 1.py'-rw-r--r-- 1 runner runner 11 Apr  3 18:38 'file 2.py'-rw-r--r-- 1 runner runner 11 Apr  3 18:38  main.pydrwxr-xr-x 1 runner runner  0 Apr  3 18:23 'Directory 1'0

Existem muitas outras opções de personalização que podem ser úteis para seu objetivo específico. Aqui você pode encontrar mais informações sobre a -ls comando e como você pode usar todo o seu poder.

🔸 Resumo do listdir x sistema (“ls”)

  • Objetivo: listdir retorna a lista de nomes de arquivos e diretórios no caminho especificado (por padrão, o diretório de trabalho atual) enquanto system("ls") apenas os exibe como saída padrão.
  • Sistema operacional: listdir pode ser usado independentemente do sistema operacional com o qual você está trabalhando. Em contraste, system('ls') deve ser executado em um sistema operacional ou ambiente que reconheça a 'ls' comando.
  • Costumização: você pode filtrar a lista retornada por listdir se você precisar remover arquivos ou diretórios usando o filter() e você pode passar opções para personalizar a saída de system('ls').

Eu realmente espero que você tenha gostado do meu artigo e que tenha sido útil. Agora você pode trabalhar com essas funções em seus projetos Python. Confira meus cursos on-line. Siga-me Twitter. 👍