Escolar Documentos
Profissional Documentos
Cultura Documentos
Evaldo Wolkers
https://www.udemy.com/python-3-para-todos
Sumário
Arquivos e diretórios (pastas) ................................................................................................................... 3
Identificando o diretório atual .................................................................................................................. 3
Criando diretórios ..................................................................................................................................... 4
Criando vários diretórios........................................................................................................................... 5
Navegando em diretórios ......................................................................................................................... 6
Renomeando arquivos e diretórios .......................................................................................................... 7
Movendo um arquivo com a função rename() ......................................................................................... 8
Listando arquivos e diretórios com a função listdir() ............................................................................... 9
Identificando diretórios e arquivos com isdir() e isfile() ......................................................................... 10
Verificando a existência de um arquivo ou diretório ............................................................................. 11
Obtendo informações do arquivo ........................................................................................................... 12
Manipulando caminhos .......................................................................................................................... 13
Acessando subdiretórios recursivamente............................................................................................... 14
Excluindo arquivos e diretórios/pastas................................................................................................... 15
Referências Bibliográficas do curso ............................................................................................................ 17
Aprendemos a ler, criar e alterar arquivos, vamos aprender agora como listar arquivos, verificar o
tamanho e a data de criação dos mesmos. Vamos ainda aprender a manipular diretórios.
Para identificar o diretório onde nosso programa está sendo executado usamos o método
getcwd() do módulo os.
import os
print(os.getcwd())
...\python.exe ".../12_caminho_atual.py"
P:\PCloud\Udemy\MeusCursos\001-PythonParaTodos\Secao 22 - Arquivos\01_Introducao\codigo
import os
os.mkdir("Curso Python")
os.mkdir("Curso Linux")
os.mkdir("Curso Missangas")
os.mkdir("Curso Python/Aula Arquivos")
os.mkdir("Curso Python/Aula Chatbot")
Pastas
criadas
A função mkdir() cria apenas um diretório por vez, por exemplo, se tentássemos criar o diretório
“Aula Arquivos” com o comando os.mkdir("Curso Python/Aula Arquivos") sem ter criado o diretório “Curso
Python” antes, seria gerado um erro. Veja a seguir, onde tento criar a pasta “ponteiros” dentro de uma
pasta inexistente.
import os
os.mkdir("Curso C/Ponteiros")
...\python.exe “.../criando_diretorio_erro.py"
Traceback (most recent call last):
File “.../criando_diretorio_erro.py", line 3, in <module>
os.mkdir("Curso C/Ponteiros")
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'Curso C/Ponteiros'
Process finished with exit code 1
os.makedirs("Curso C/Ponteiros")
Navegando em diretórios
os.chdir("Curso Linux")
print("Pasta atual:", os.getcwd())
os.chdir("..")
print("Pasta atual:", os.getcwd())
os.chdir("Curso Python")
print("Pasta atual:", os.getcwd())
os.chdir("Aula Arquivos")
print("Pasta atual:", os.getcwd())
os.chdir("../../Curso Missangas")
print("Pasta atual:", os.getcwd())
C:\Users\Evaldo\AppData\Local\Programs\Python\Python36\python.exe "P:/PCloud/Udemy/MeusCursos/001-PythonParaTodos/Secao 22 -
Arquivos/01_Introducao/codigo/navegando_diretorios.py"
Pasta atual: P:\PCloud\Udemy\MeusCursos\001-PythonParaTodos\Secao 22 - Arquivos\01_Introducao\codigo\Curso Linux
Pasta atual: P:\PCloud\Udemy\MeusCursos\001-PythonParaTodos\Secao 22 - Arquivos\01_Introducao\codigo
Pasta atual: P:\PCloud\Udemy\MeusCursos\001-PythonParaTodos\Secao 22 - Arquivos\01_Introducao\codigo\Curso Python
Pasta atual: P:\PCloud\Udemy\MeusCursos\001-PythonParaTodos\Secao 22 - Arquivos\01_Introducao\codigo\Curso Python\Aula Arquivos
Pasta atual: P:\PCloud\Udemy\MeusCursos\001-PythonParaTodos\Secao 22 - Arquivos\01_Introducao\codigo\Curso Missangas
Process finished with exit code 0
Para renomear um diretório que não esteja no path atual, você deve informar o caminho.
import os
import os
os.rename("nome_antigo.txt", "nome_novo.txt")
A função rename() pode ser usada para mover um arquivo, caso você informe um diretório diferente. Veja
como mover um arquivo.
import os
import os
print(os.listdir("C:\Windows\Fonts"))
C:\Users\Evaldo\AppData\Local\Programs\Python\Python36\python.exe "P:/PCloud/Udemy/MeusCursos/001-PythonParaTodos/Secao 22 -
Arquivos/01_Introducao/codigo/listando.py"
['8514fix.fon', '8514fixe.fon', '8514fixg.fon', '8514fixr.fon', '8514fixt.fon', '8514oem.fon', '8514oeme.fon', '8514oemg.fon', '8514oemr.fon',
'8514oemt.fon', '8514sys.fon', '8514syse.fon', '8514sysg.fon', '8514sysr.fon', '8514syst.fon', '85775.fon', '85855.fon', '85f1255.fon',
...CONTEÚDO REMOVIDO
'vgaf1255.fon', 'vgaf1256.fon', 'vgaf1257.fon', 'vgaf874.fon', 'vgafix.fon', 'vgafixe.fon', 'vgafixg.fon', 'vgafixr.fon', 'vgafixt.fon', 'vgaoem.fon',
'vgas1255.fon', 'vgas1256.fon', 'vgas1257.fon', 'vgas874.fon', 'vgasys.fon', 'vgasyse.fon', 'vgasysg.fon', 'vgasysr.fon', 'vgasyst.fon', 'VINERITC.TTF',
'VIVALDII.TTF', 'VLADIMIR.TTF', 'webdings.ttf', 'wingding.ttf', 'WINGDNG2.TTF', 'WINGDNG3.TTF', 'yandex.ttf', 'YuGothB.ttc', 'YuGothL.ttc',
'YuGothM.ttc', 'YuGothR.ttc']
Process finished with exit code 0
Curso Python para Todos – Evaldo Wolkers
evaldowolkers@gmail.com - https://evaldowolkers.wordpress.com - https://www.facebook.com/evaldowolkers
Página 9
Veja a lista de arquivos e pastas da pasta “/home/evaldo” em uma máquina Linux.
Como o listdir() retorna uma lista, vamos fazer um loop percorrendo cada item do resultado.
Usando a função isdir() ou isfile() que fazem parte do módulo os.path vamos validar cada um destes itens.
import os
.idea é um diretório!
...REMOVIDO CONTEÚDO.
movendo_arquivo.py é um arquivo!
listando.py é um arquivo!
validar.py é um arquivo!
diretorios = []
arquivos = []
for objeto in os.listdir("."):
if os.path.isdir(objeto):
diretorios.append(objeto)
elif os.path.isfile(objeto):
arquivos.append(objeto)
print("Diretórios:", diretorios)
print("Arquivos:", arquivos)
Diretórios: ['.idea', 'Curso Python', 'Curso Linux', 'Curso Maquiagem', 'Curso C']
Para verificar a existência de um arquivo ou diretório usamos a função exists() do módulo path.
import os.path
while True:
nome = input("Informe um nome de arquivo ou pasta (informe 'sair' para
finalizar): ")
if nome.upper() == "SAIR":
break
if os.path.exists(nome):
print(nome, "existe!!!")
if os.path.isdir(nome):
print(nome, "é um diretório.")
elif os.path.isfile(nome):
print(nome, "é um arquivo.")
else:
print(nome, "NÃO existe!!!")
hino_nacional.py existe!!!
Curso Python para Todos – Evaldo Wolkers
evaldowolkers@gmail.com - https://evaldowolkers.wordpress.com - https://www.facebook.com/evaldowolkers
Página 11
hino_nacional.py é um arquivo.
Informe um nome de arquivo ou pasta (informe 'sair' para finalizar): Curso Linux
import os.path
import time
while True:
nome = input("Informe um nome de arquivo (informe 'sair' para finalizar):
")
if nome.upper() == "SAIR":
break
print("Nome:", nome)
print("Tamanho:", os.path.getsize(nome), "bytes")
print("Data da criação:", time.ctime(os.path.getctime(nome)))
print("Data de modificação:", time.ctime(os.path.getmtime(nome)))
print("Data de acesso:", time.ctime(os.path.getatime(nome)))
Nome: hino_nacional.py
Cada sistema operacional trabalha de uma forma específica quando se trata de caminhos de
arquivos e pastas, no Linux e no Mac OS X o caractere separador de pastas/diretórios é o “/”, já no
Windows, é o “\”.
os.path.abspath()
Retorna o caminho absoluto do path informado por parâmetro. Se o caminho não começar com
“/”, o diretório atual é acrescentado, retornando o caminho completo à partir da raiz. No caso do
Windows, incluindo também a letra do disco (drive) “C:”, “D:”, etc.
os.path.basename()
os.path.dirname()
os.path.splitdrive()
Usado no Windows para separar a letra do drive. Retorna uma tupla, onde a letra do drive é o
primeiro elemento, e o restante do caminho, o segundo elemento. No Linux,
os.path.commonpath()
os.path.commonprefix()
os.path.join()
if not os.path.exists(caminho):
os.mkdir("Curso Python/Aula Arquivos/Caminhos")
if not os.path.exists(caminho2):
os.mkdir("Curso Python/Aula Chatbot/Facebook Messenger")
import os
import os
if os.path.exists(nome_diretorio):
print(f"O diretório '{nome_diretorio}' existe!")
else:
print(f"O diretório '{nome_diretorio}' não existe!")
os.rmdir(nome_diretorio)
if os.path.exists(nome_diretorio):
print(f"O diretório '{nome_diretorio}' existe!")
else:
print(f"O diretório '{nome_diretorio}' não existe!")
Para excluir diretórios com conteúdo usamos a função rmtree() do módulo shutil.
import os
import shutil
dir1 = "Diretorio1"
dir2 = "Diretorio2"
dir3 = "Diretorio3"
arq1 = "Arquivo1.txt"
arq2 = "Arquivo2.txt"
if not os.path.exists(dir1):
os.makedirs(dir1 + "/" + dir2 + "/" + dir3)
try:
os.rmdir(dir1)
except:
print(f"Não pode excluir '{dir1}' porque tem conteúdo.")
shutil.rmtree(dir1)
if not os.path.exists(dir1):
print("Os diretórios foram apagados.")
Diretorio3/
LIVROS
Phillips, Dusty, Python 3 Object-oriented Programming, Second Edition, Birmingham, Packt Publishing Ltd,
2015, ISBN 978-1-78439-878-1
Hattem, Rick V, Mastering Python, Birmingham, Packt Publishing Ltd, 2016, ISBN 978-1-78528-972-9
Romano, Fabrizio, Learning Python, Packt Publishing Ltd, 2015, ISBN 978-1-78355-171-2
Slatkin, Brett, Python Eficaz: 59 maneiras de programar melhor em Python, São Paulo, Novatec, 2016,
ISBN 978-85-7522-510-3
Giridhar, Chetan, Aprendendo Padrões de Projeto em Python, São Paulo, Novatec, 2016, ISBN 978-85-
7522-523-3
Reitz, Kenneth; Schlusser, Tanya, O Guia do Mochileiro Python: Melhores práticas para desenvolvimento,
São Paulo, Novatec, 2017, ISBN 978-85-7522-541-7
Menezes, Nilo C M, Introdução à Programação com Python: Algoritmos e lógica de programação para
iniciantes, 2ª edição, São Paulo, Novatec, 2014, ISBN 978-85-7522-408-3
Borges, Luiz E, Python para desenvolvedores, São Paulo, Novatec, 2014, ISBN 978-85-7522-405-2
SITES