Enviar um café pro programador

Mostrando postagens com marcador Arquivos. Mostrar todas as postagens
Mostrando postagens com marcador Arquivos. Mostrar todas as postagens

Módulo os : Caminhos, Endereços, Pastas e Diretórios

Neste Tutorial de Python, vamos te ensinar melhor como trabalhar com os endereços (ou seja, os caminhos, a localização) de arquivos em um sistema operacional, vamos aprender a navegar por pastas, criar diretórios, ver o tamanho dos arquivos, conteúdo de pastas e muito mais.

Tudo isso através do módulo os

Apostila de Python
Certificado do Curso

Acessando Outros Locais: path


Durante nossa seção de Arquivos em Python, sempre que abrimos nossos arquivos, fornecemos apenas o nome do arquivo de texto, para a função open()

Por exemplo, para ler um arquivo cujo nome é teste.txt, fazemos:
  • meuArquivo = open('teste.txt', 'r')

Ok, isso é certo e bonitinho se seu script Python estiver na mesma pasta ou diretório do arquivo de texto. Mas geralmente não é assim que se trabalha com arquivos.

As vezes nosso script está em:
C:\Python\scripts

E você quer hacker seu Windows lendo um arquivo:
C:\System32\teste.txt

E aí, como faz, José?

Simples, ao invoes de 'teste.txt', use o endereço completo (path) do arquivo:
  • meuArquivo = open('C:\\System32\\teste.txt', 'r')
Note que usamos duas barras.
Tente imprimir no Python: print('\')
Vai dar erro.

O motivo é que, para imprimir uma barra \ precisamos fazer \\ (lembra do caractere '\n', pois é, o caractere \ é representado por '\\').

Exercício de Arquivos
Crie um script que crie um arquivo de nome 'virus.txt' em sua área de trabalho, e ao abrir, esteja escrito o texto: "Você foi hackeado. Curso Python Progressivo"

Endereços nos Windows, Linux e Mac

Temos um pequeno 'problema' em relação aos endereços de arquivos e pastas, no que se refere a Linux/Mac e sistemas Windows.

Uma pasta do Windows: C:\Windows\Jose\Python
Um diretório no Linux : /home/user/Maria/Python
Ou seja, as barras são invertidas!

Se tentar acessar um endereço que não existe (como um C: no Linux ou /home no Windows) vai dar erro sim em seus scripts!

Assim, como bons programadores (afinal estudamos pelo curso Python Progressivo), temos que nos preparar para os dois sistemas, pois o Python por si só já tem um conceito de portabilidade e multiplataforma muito fortes, e devemos sempre ter isso em mente: nossos scripts devem rodar em qualquer sistema, até em Android se possível.

Vamos ver um 'truque' pra nos ajudar com isso, é a função os.path.join() do módulo os, que recebe várias strings, com os nomes das pastas e retorna uma string do endereço correto no sistema operacional de cada pessoa.

Por exemplo, se digitar: os.path.join('home', 'user','Maria')
Se estiver no Windows, a função retorna a string: 'home\\user\\Maria'
Se estiver no Linux, retorna a string: 'home//user//Maria'


Caminhos Absolutos e Relativos

Quando você instala um jogo, e quando você for criar seus games e softwares, a primeira coisa que vai pedir ao usuário, é o local no sistema dele onde vai instalar.

Se ele disser: C:\Jogos selecionando lá as janelinhas do explorer, você guarda numa variável:
path = 'C:\\Jogos" e pronto.

Vai criar a pasta de fases como? Assim: os.path.join(path, 'level')
Pronto, te retorna a string com o endereço absoluto completo (desde C:\ atéééé 'level')
E a pasta de personagens? Assim: os.path.join(path,'characters')

E a pasta do personagem 'Geddy'? os.path.join(path,'characters','Geddy')
E assim vai indo.


Note que não importa o que está na variável path, foi o usuário que escreveu.
Ela pode ser desde nada, vazia, até C:\usuario\secreto\porn\virus\nao_mexa'

Não importa, ok?
É por isso que te pedem pra navegar e escolher a pasta que vai querer instalar, pra você fornecer ao programa ou jogo, uma string com o caminho onde vão ficar as pastas e arquivos do soft.

Pasta atual: getcwd()

Rode o seguinte script em Python:

import os
print( os.getcwd() )

O resultado vai ser um endereço de sua máquina.
Qual? O endereço em que você está rodando seu script.

O comando getcwd(), do módulo os (de sistema operacional) retorna o diretório de trabalho atual (current working directory, cwd).

Como mudar de pasta: chdir()

Já o chdir recebe uma string, com um endereço pra onde você deseja ir.
Escolha um local, como sua área de trabalho (não sei que sistema você usa, nem suas pastas internas).

Como eu rodo Linux, vou dar uma passeada na minha pasta onde guardo meus scripts de Python.
Primeiro vou pra lá com chdir, depois printo o endereço de lá com getcwd, vejam meu código:

import os
os.chdir('//home//user//Python')
print( os.getcwd() )

Como ficou o de vocês, pra ir até sua pasta de scripts?

Como criar uma nova pasta: makedirs()

E que tal criar uma pasta, dentro do diretório atual?

Basta fornecer o endereço na formada de string, para a função makedirs()
Vamos criar uma pasta chamada 'arquivos', dentro da minha pasta de scripts Python, lá onde vou guardar meus scripts sobre arquivos, faço assim:

import os
os.makedirs('//home//user//Python//arquivos')

Crie uma sua também.
Depois vá lé e veja sua pasta criada.

Se não tivesse, por exemplo, a pasta 'Python', ele ia criar a 'Python' e depois a 'arquivos'.
Ele vai criando tudo, até criar a pasta existente que você deseja.

Basename e dirname

Se tiver uma string com endereço de um arquivo:
path = 'C:\\Estudo\\Python\\script.py'

E usar a função: os.path.basename(path)
Ele retorna: 'script.py', que é o nome de base.

Já se usar: os.path.dirname(path)
Ele retorna: "C:\\Estudo\\Python' , que é o nome do diretório do arquivo da base.

Se quiser os dois, use a função: os.path.split(path)
Que ela re torna uma tupla com os dois caminhos: ('C:\\Estudo\\Python', 'script.py'), prontinho pra você usar as duas informações.

Como Calcular o tamanho de um arquivo: getsize()

Tem uma função bem bacana no módulo os, chamada getsize, que como o nome diz, pega o tamanho do arquivo.

Se o nome do script que você está programando é arquivos.py, o código abaixo vai printar o tamanho em bytes desse arquivo, em seu sistema operacional:

import os
print( os.path.getsize('arquivos.py') )


Aqui deu 50, e aí?

Exibindo conteúdo de uma pasta ou diretório: listdir()
Se ao invés do endereço de um arquivo, você passar o caminho de uma pasta ou diretório, dessa vez pra função listdir, ele printar na sua tela todo o conteúdo daquela pasta.

Se usar Windows, teste o seguinte código:

import os
print( os.listdir('C:\\Windows\\System32') )

Se usar Linux, teste o seguinte código:

import os
print( os.listdir('//') )

Interessante e simples, não é?
São os arquivos mais importantes de seu sistema operacional, e agora estão sob seu poder...Mwahahahaha.

Não se assuste, programador é assim, tem poderes que os outros não tem.
Tem acesso, tem conhecimento e possibilidades que mais ninguém tem.

Exercício de Arquivos em Python
Crie um script em Python que liste todos os arquivos e diretórios de um determinado caminho, e calcule a soma de todos os arquivos em bytes.

Vamos armazenar os bytes na variável tamanho.
A função listdir  uma lista de nomes de arquivos.

Então, podemos usar um laço for, com uma variável temporária filename, que vai assumir o nome de cada arquivo desses, dessa lista. Usamos a função os.path.join() para obter o endereço completo de cada arquivo e usamos a getsize para obter o tamanho de cada um e somar na variável tamanho.

Veja como ficou nosso código Python


import os

tamanho = 0
for filename in os.listdir('C:\\Windows\\System32'):
    tamanho += os.path.getsize(os.path.join('C:\\Windows\\System32', filename))


print(tamanho)

Módulo OS

Existe ainda, uma série de outras funções e possibilidades, para se trabalhar com pastas e arquivos, pelo fantástico módulo os.

Recomendamos que, sempre que tiver alguma dúvida, consulte a documentação oficial da linguagem de programação Python:
https://docs.python.org/3/library/os.html

Como Processar Arquivos com Laço FOR (looping)

Neste tutorial de Python, vamos aprender como processarcom arquivos usando laços e loopings, nos permitindo trabalhar com grandes quantidades de informação.

Se desejar viver de programação, acesse:
Curso de Python com certificado

Para estudar por este e outros tutoriais offline, veja:
Apostila Python Progressivo

Arquivos e Laço FOR

Até o momento, em nossa seção de Arquivos em Python, trabalhamos com pequenos arquivos de textos, geralmente de duas ou três linhas, até para simplificar e agilizar nossos tutoriais de explicações.

Porém, o normal é termos arquivos grandes, com centenas ou milhares de linhas.

Quando você se tornar um programador Python profissional, vai ter planilhas documentos de texto, PDF e outros tipos de listas (como de funcionários e alunos), de milhares e milhares de linhas.

Então, vamos te mostrar como trabalhar com um arquivo usando o laço FOR.

Primeiro, entre no seguinte link e copie toda a lista:

Salve em um arquivo de texto de nome linguagens.txt

Vamos criar um script que pergunta ao usuário quantos nomes de linguagens de programação ele deseja ver.

Primeiro, criamos um objeto do tipo FILE de nome arquivo, para abrir linguagens.txt
Vamos pegar todo o conteúdo de texto e colocar numa lista de nome linguas, através do método readlines()

Usamos a função len() para contar quantos elementos tem a lista linguas, cujo número de elementos é o número de linhas do arquivo de texto, logo, mostrando o total de linguagens de programação que tem no texto.

Perguntamos ao usuário quantas linguagens ele deseja ver o nome e armazenamos na variável inteira num.

Por fim, entramos no laço FOR.
Vamos percorrer um total de num elementos, onde imprimimos o número de vezes que o usuário escolheu, imprimindo os elementos da lista linguas (usamos o método rstrip() para retirar o caractere de quebra de linha '\n\).

Veja como ficou nosso código:

arquivo = open('linguagens.txt', 'r')
linguas = arquivo.readlines()

print("Existem", len(linguas), "linguagens. Quantas deseja ver?")
num = int(input())

for count in range(num):
    print(str(count+1),":",linguas[count].rstrip('\n'))
    
arquivo.close()

Detectando o final de um arquivo: End of file ''

Tem um probleminha no código anterior.
Experimente digitar 717.

Aguarde tooooda a lista de linguagens de programação ser printada em sua tela e...erro:

Arquivos e loopings - Tutorial de Python - Curso com certificado

Deu erro de list index out of range, ou seja, você tentou acessar um índice da lista que não existe.
A lista tem 716 linguagens/linhas, e você tentou acessar mais que isso.

Poderíamos evitar esse erro fazendo uma coisa bem simples: detectando o final do arquivo.
Agora, ao invés de criar uma lista, vamos imprimir linha por linha do arquivo, através do método readline(), que lê uma linha por vez e retorna essa string, e armazena na variável linha que criamos.

Vamos usar o mesmo laço FOR pra imprimir o número de linguagens que o usuário quis ver.
Ao final, quando chega no fim do arquivo, o método readline() retorna uma string vazia.

Uma string vazia é simboliza, simplesmente, por: ''

Ou seja, a cada iteração do loop verificamos o conteúdo de linha.
Se for diferente de string vazia, imprimimos mais uma linha.
Se for vazia, dizemos que chegou no fim do arquivo.

Nosso código Python ficou:

arquivo = open('linguagens.txt', 'r')
num = int(input("Numero de linguagens: "))

for linha in arquivo:
    linha = arquivo.readline()

    if linha != '':
        print(linha.rstrip('\n'))
    else:
        print("Fim do arquivo")
    
arquivo.close()

Lendo Arquivos com laço FOR

Os exemplos anteriores foram mais para você aprender como pensa um programador, entender como as coisas funcionam por trás dos panos e te ajudar em lógica, ou seja, de realmente entender o que tá fazendo e o que tá acontecendo quando seu código roda.


Porém, existe uma maneira ainda mais simples de ler um arquivo de texto, sem usar readlines() nem a readline(), simplesmente imprimindo direto da variável do tipo File, e também sem precisar detectar o final de um arquivo.

Sabe onde fizemos:
  • for variavel in range(valor): 

Em vez de range(), basta usar o objeto do tipo File mesmo.
O Python subtende que seu range vai ser as linhas do arquivo.

Fica:
  • for linha in arquivo:

Prontinho.
A cada iteração do loop For o valor de linha é uma linha do arquivo de texto arquivo, que definimos e abrimos anteriormente (com a open()).

Para exibir o número correto de linguagens que o usuário solicitou, vamos usar uma variável para fazer a contagem, a count. O IF imprime uma linha, já quando essa variável passa do valor digitado pelo usuário, cai no ELSE e ele dá um break no laço FOR, terminando a leitura do arquivo.

Veja como ficou nosso código Python:

arquivo = open('linguagens.txt', 'r')
num = int(input("Numero de linguagens: "))
count=0

for linha in arquivo:
    if count<num:
        print(linha.rstrip('\n'))
        count=count+1
    else:
        break

arquivo.close()

Como Retirar a Quebra de Linha (caractere \n) em Python

Neste tutorial de nosso Curso de Python, vamos aprender como remover o caractere de nova linha ou quebra de lina, o \n das strings que lemos de arquivos.

Leia também:
Caso deseje trabalhar e ganhar dinheiro como programador Python:

O Caractere de Quebra de Linha em Arquivos: \n


Escreva em um artigo de texto, de nome bandas.txt o nome de algumas bandas favoritas que você tem.

As minhas bandas favoritas são:
Rush
Iron Maiden
Led Zeppelin

O arquivo deve conter só isso.
3 bandas, 3 linhas de informação.

Agora vamos criar um script em Python que exibe essas minhas três bandas favoritas.

meuArquivo = open('bandas.txt', 'r')
bandas = meuArquivo.readlines()
for banda in bandas:
    print(banda)
meuArquivo.close()

Prontinho, a variável banda assume o valor de cada linha do arquivo de texto bandas e imprime as bandas, o resultado é:

Curso completo de Python, Tutorial online e Apostila para download


Mas...peraí...tem uma coisa estranha, me incomodando:
Tem uma linha em branco ali, entre cada banda.

Que troço chato, que troço feio. Como se retira isso?
Aliás, por que aparece essa linha em branco a mais ?

A explicação é simples:
Ao digitar "Rush", você não digita "Rush".

Você digita "Rush\n", pois você dá um enter ali no final, pra quebrar a linha, pra ir pra linha de baixo.

Então, quando a variável banda vai pegar a string, ela não pega:
"Rush"

Ela pega:
"Rush\n"

Por isso aparece sempre uma linha nova, em branco, quando damos print.
Temos que remover essa maldita new line \n

Quando você vai jogar algum jogo, aparece:
"Fase: 5"
"Poder: 10"
"Defesa: 6"

E não:
"Fase: 5"

"Poder: 10"

"Defesa: 6"

Vamos lá! Vamo aprender a fazer o negócio direito!


Como Remover o Caractere de New Line: rstrip( '\n' )

Como explicamos, ao lermos (read() ou readlines() ou readline()) um arquivo, vamos pegar ele na forma de string, ou seja, é um texto.

Vamos usar um método chamado rstrip(), ele serve pra 'estripar' algum caractere, ou seja, retirar, dar um strip nele, e varrer da string.

No caso, queremos retirar o caractere de nova linha, então fazemos: rstrip('\n')

Ele é um método de objetos do tipo String.
No caso, a variável que vai armazenar as strings, uma por uma, é a variável banda, então aplicamos nela o método:
banda.rstrip('\n')

Ela retorna a mesma string banda, mas sem os caracteres \n.
Veja como fica nosso código:

meuArquivo = open('bandas.txt', 'r')
bandas = meuArquivo.readlines()

for banda in bandas:
    banda = banda.rstrip('\n')
    print(banda)

meuArquivo.close()

E o resultado:
Como programar em Python - Curso com certificado grátis

Note que alteramos somente a variável temporária do LAÇO FOR, a banda.
Para alterarmos cada elemento da lista de strings bandas:

meuArquivo = open('bandas.txt', 'r')
bandas = meuArquivo.readlines()

for index in range(len(bandas)):
    bandas[index] = bandas[index].rstrip('\n')
meuArquivo.close()

Agora, toda a nossa lista bandas não tem mais o maledito carectere '\n' ao final de cada string.



Documentação Python:

Como Escrever em um Arquivo: write() e Modos de Abertura

Neste tutorial de nosso Curso de Python, vamos mostrar como fazer para escrever algo em um arquivo via programação Python e modos de abertura de arquivos.

Caso deseje trabalhar e ganhar dinheiro como programador Python:

Como Escrever em um Arquivo: Método write()


A palavra print em inglês significa imprimir.

Quando usamos a função print é porque estamos imprimindo, escrevendo na tela do shell e na tela de seu computador, é uma maneira de escrever.

Outra maneira de printar ou escrever é fazendo isso em arquivos. Ou seja, escrevemos via script Python dentro de um arquivo.

Mas, antes, precisamos ver o que é modo de abertura.



Modos de Abertura

Quando falamos em abrir arquivos via função open() fazemos somente:
open(caminho)

Onde caminho é uma string com o endereço do arquivo que queremos abrir.
Porém, isso é o mesmo que fazer:
  • open(caminho, 'r')

Esse r é de read, ou seja, leitura. É um modo de abertura, significa que estamos abrindo um arquivo para leitura, ou seja, modo de abertura read.

Nesse modo, podemos apenas ler os dados de um arquivo, não podemos alterar nada.





Escrevendo em Arquivos: write() e 'w'

Antes de escrevermos em um arquivo, precisamos abrir ele no modo escrita.
Para isso, fazemos:
  • open(caminho, 'w')

Em seguida, para escrevermos uma string em um arquivo de nome file.txt usamos o método write(), de objetos de tipo File.

Por fim, temos sempre que fechar o arquivo, ao término do script, através do método close().

O seguinte código Python escreve a string "Curso Python Progressivo" no arquivo file.txt:
meuArquivo = open('file.txt', 'w')
meuArquivo.write("Curso Python Progressivo")
meuArquivo.close()

Agora vá lá na pasta que está o seu script Python e veja que apareceu um arquivo de nome file.txt
Abra ele e veja que vai estar escrito lá dentro:
"Curso Python Progressivo".

Prontinho! Você acabou de escrever, printar uma string dentro de um arquivo em seu computador.

Detalhe para uma coisa: se você abrir e escrever em um arquivo que não existe, ele cria esse arquivo.

Adicionando Informações em um Arquivo: Modo append, 'a'

Agora temos um arquivo de nome file.txt e dentro dele teme scrito "Curso Python Progressivo".

Vamos escrever outra frase nele:
"O melhor curso de Python"

Repetimos o código:
meuArquivo = open('file.txt', 'w')
meuArquivo.write("O melhor curso de Python")
meuArquivo.close()

Agora vá lá e leia o que está escrito:
"O melhor curso de Python"

Epa!!!! Alto lá!!!
Cadê a string "Curso Python Progressivo" ? Queríamos adicionar uma string, e não substituir o que tinha lá.

Pois é, ao usar o modo de abertura write 'w', ele sobrescreve o arquivo, caso ele já exista.
Ou seja, apaga e cria um novo, com essa nova informação.

Para ADICIONAR, vamos usar o modo de adição (append mode), simbolizado por 'a' quando formos abrir nosso arquivo.

Repita o código lá de cima, com:
meuArquivo = open('file.txt', 'w')
meuArquivo.write("Curso Python Progressivo\n")
meuArquivo.close()

Agora, modifique seu código para:
meuArquivo = open('file.txt', 'a')
meuArquivo.write("O melhor curso de Python")
meuArquivo.close()

E abra o arquivo de texto:
Modos de abertura em Python: read ('r'), write ('w') e append ('a')


Voilá! Adicionamos mais uma string, sem apagar o que tinha lá antes!!!
Tudo isso porque usamos o modo de abertura 'a'.

Modos de abertura de Arquivos em Python

  • "a"  - Escreve ao final do arquivo; se este não existir, é criado
  • "r"  - Abre o arquivo para a leitura, se não existir, lançar um eerro de IOError
  • "r+" - Abra um arquivo para leitura e escrita. Se não existe, lança um erro IOError
  • "w"  - Abre um arquivo para escrita. Se existe, ele 'trunca' tudo e escreve por cima. Se não existir o arquivo, ele cria
  • "w+" - Abre para leitura e escrita. Se existe, apaga todo conteúdo e escreve por cima. Se não existir o arquivo, ele cria
  • "ab", "rb", "r+b", "wb", "w+b" - Abre arquivos para trabalhar com entrada e saída no modo binário, para plataformas Windows e Macintosh

Como Ler Linha por Linha em Arquivo em Python: readlines()

Neste tutorial de nosso Curso de Python, vamos te ensinar uma nova maneira de ler um arquivo de texto: linha por linha, usando o método readlines()

Caso deseje estudar offline, veja:
Caso deseje trabalhar e ganhar dinheiro como programador Python:

Ler Linha por Linha: Método readlines()


No tutorial anterior de nosso curso, falando como abrir e ler um arquivo em Python.
Para isso, usamos a função open() e o método read() do objeto do tipo File.

Porém, quando lemos usando o read(), ele pega todo o conteúdo do arquivo de texto, e coloca em apenas uma única string, tudo junto.

Porém, geralmente, não é isso que desejamos, e sim pegar 'pedaços' menores.
Por exemplo, crie o arquivo de texto com o nome dos funcionários de sua empresa:

Geddy Lee
Neil Peart
Alex Lifeson

Salve como funcionarios.txt e deixe na mesma pasta (diretório) do seu script Python.
Aprendemos que para abrir, ler e printar o conteúdo do arquivo, fazemos:

meuArquivo = open('funcionarios.txt')
nomes = meuArquivo.read()
print(nomes)

Ou seja, na variável nomes tem uma string gigante, com o nome dos três funcionários.
Existe um método, chamado readlines(), que também faz parte do objeto do tipo File.

Quando fazemos isso, ele lê o arquivo, porém ao invés de retornar uma string ele retorna uma LISTA DE STRINGS ! Ele vai pegar linha por linha, e cada linha vai ficar em uma posição da lista.

Veja como fica nosso código usando readlines():

meuArquivo = open('funcionarios.txt')
nomes = meuArquivo.readlines()
print(nomes)


O resultado do print, no shell, é:
['Geddy Lee\n', 'Neil Peart\n', 'Alex Lifeson\n']

Ou seja, uma lista, com três strings dentro!
Para a readlines() cada linha é uma string que termina no caractere '\n'.

Seu arquivo de texto pode ter 1 milhão de linhas.
Se usar a readlines(), ela vai criar uma lista de 1 milhão de elementos.




Exercício de Arquivos em Python

Copie toda a letra da música 2112, da banda Rush (melhor banda do universo):

E salve em um arquivo de texto letra.txt
Depois, crie um script de Python que exibe essa letra e o número de linhas dessa letra.

Nosso código Python ficou:

meuArquivo = open('letra.txt')

nomes = meuArquivo.readlines()

for nome in nomes:
    print(nome)

print("Número de linhas na letra: ", len(nomes))


Note que para saber o número de linhas, basta usarmos a função len() com o valor da lista dentro dessa função, ela vai retornar o número de strings na lista, que é o mesmo número de linhas da letra.

Aqui, deu que tem 144. Aí também?

Agora faça isso com a letra de sua música favorita.
Diga nos comentários qual sua música favorita e quantas linhas tem ela.

Lendo uma linha: readline()

Note que o comando está no plural: readlineS()

É possível ler apenas uma linha, uma única, com o comando readline()
Ele lê, pega tudo até o '\n' e pronto, devolve.

Se chamar de novo o método, ele vai ler a próxima linha, até o próximo '\n' e retornar essa string.

E assim vai. Você escolher, ler todas as linhas e colocar numa lista, ou ler uma por uma.
As vezes precisamos de uma coisa, as vezes precisamos de outra.

O importante é saber as possibilidades e poderes que temos, pra poder usar de maneira mais apropriada, quando for necessário.

Arquivos em Python: Como Abrir e Ler - open() e read()

Neste tutorial introdutório da seção Arquivos em Python, vamos te ensinar como abrir e ler um arquivo armazenado em seu computador, usando duas funções open() e read().

Caso deseje estudar offline, veja:
Caso deseje trabalhar e ganhar dinheiro como programador Python:

Com Abrir um Arquivo em Python: open()

Antes de abrir um arquivo, vamos criar ele.

Na pasta em que vai ficar armazenado seu script, crie um arquivo chamado: teste.txt

Dentro dele escreva algo, como "Curso Python Progressivo".

Veja como ficam os arquivos (mesma pasta) e arquivo de texto aberto com uma string:
Como trabalhar com arquivos em Python
Para abrirmos o arquivo texte.txt vamos usar a função open().
Essa função recebe uma string, com o endereço do arquivo que você deseja abrir.

Como nosso arquivo está no mesmo diretório do script, podemos escrever só seu nome: 'teste.txt' (não se esqueça das aspas, precisa ser uma string).

E prontinho, essa função retorna objeto do tipo File (não se preocupe, em breve vamos aprender melhor o que é um objeto). Para não perdermos esse objeto, vamos associar ele a uma variável, a meuArquivo

Então, para abrir um arquivo de nome teste.txt, usamos o comando:
  • meuArquivo = open('teste.txt')

Experimente imprimir agora a variável meuArquivo:


meuArquivo = open('teste.txt')
print(meuArquivo)

Vai aparecer a seguinte informação:
<_io.TextIOWrapper name='teste.txt' mode='r' encoding='UTF-8'>
>>>
Ou seja, um punhado de informações sobre o arquivo teste.txt, como seu nome, modo de abertura (vamos explicar mais na frente) e codificação dele.

Como Ler um Arquivo: read()

Ok, abrimos um arquivo e já temos um 'meio' de se comunicar e trabalhar com o arquivo, através da variável meuArquivo.

Mas queremos acessar é o conteúdo dele, ver o que tem dentro.
Para isso, basta usarmos o método read(), que tem nos objetos do tipo File.

Para imprimir o conteúdo de um arquivo, é só fazer:
  • meuArquivo.read()
Vejamos um código onde abrimos um arquivo e depois imprimimos seu conteúdo:

meuArquivo = open('teste.txt')
print(meuArquivo.read())

E prontinho! Aparece no shell do Python, quando você rodar o script, o conteúdo do arquivo txt.
Bacana, não ?

Agora, em vez de deixar escrito no arquivo o texto 'Curso Python Progressivo', escreva:
Curso
Python
Progressivo

E rode novamente o programa, o resultado vai ser:
O método read() para ler um arquivo em Python

Ou seja, ele copiou idêntico ao arquivo, inclusive as quebras de linha.
Mesmo que o arquivo tenha 1 milhão de linhas de texto, o método read() vai retornar apenas uma string, com o texto inteiro do arquivo, ok?

E repetindo:
  • meuArquivo - é um objeto do tipo File
  • meuArquivo.read() - é uma string
São coisas diferentes!