-
Um pouquinho mais estruturado
que o txt é o CSV.
-
O CSV é um tipo de arquivo
cujos campos estão separados,
-
delimitados por sinal gráfico,
como vírgula ou ponto e vírgula.
-
Vamos dar uma olhadinha aqui.
-
Nós temos nesse arquivo, "jedis.csv",
um arquivo que é separado por vírgula
-
cada um dos atributos
que nós vamos ler.
-
Então, o "nome_jedi", "idade_jedi"
e a "classificacao_jedi".
-
E cada uma das linhas
está falando de um Jedi.
-
O primeiro é o Luke,
que tem 23 anos e é Padawan.
-
E assim nós temos as outras linhas,
o Obi-Wan, o Yoda, o Mace Windu.
-
O arquivo CSV não é nativo
da biblioteca Python.
-
Nós temos que importar
uma biblioteca especializada.
-
Essa biblioteca
que nós vamos tratar
-
é uma biblioteca
chamada CSV.
-
Vamos dar uma olhadinha
aqui no código
-
e vemos que as mesmas
coisas que nós usamos
-
para o arquivo txt vão ser repetidas
aqui no arquivo CSV.
-
Então, tanto o "open",
que estamos abrindo o arquivo,
-
especificando
o tipo que ele é, ".csv",
-
quanto o "close"
também nós vamos fazer.
-
".close".
-
Dentro desse arquivo,
nós vamos usar a função "csv.reader"
-
para ler o conteúdo
desse arquivo.
-
E aqui especificamos
o delimitador, que é vírgula.
-
E também especificamos
que o delimitador de palavra
-
é a aspa dupla.
-
Nesse arquivo nós temos a possibilidade
de ignorar uma linha, como?
-
Com a função "next".
-
A função "next" lê a linha
e pula essa linha.
-
Então, aqui no nosso arquivo,
a primeira linha
-
que especifica os nomes
dos campos vai ser pulada.
-
E daí nós vamos fazer um loop
como nós fizemos no arquivo txt.
-
O que vamos fazer
agora é ler a linha.
-
E nós vamos trazer a linha
especificando cada um dos campos
-
pelo índice, já que lemos a linha
como se fosse uma lista.
-
Se rodarmos esse
arquivo aqui,
-
vamos ver o resultado
sendo um print
-
dizendo cada um dos arquivos lidos
e especificando os campos.
-
Por exemplo, do Luke, nós vemos
que ele tem 23 anos de idade
-
e ele é classificado
como Padawan.
-
É muito simples
trabalhar com CSV,
-
já que ele tem uma biblioteca
especializada.
-
Podemos perceber que o Python
tenta facilitar a nossa vida
-
lendo os arquivos e transformando
em objetos conhecidos.
-
Aqui, de novo, nós estamos
lendo um arquivo CSV
-
e o transformando
em uma lista.
-
No arquivo texto também,
mas no arquivo JSON
-
nós vamos transformar
em dicionário.
-
Nós vemos aqui que a nossa
boa prática nos ensina
-
a abrir um arquivo
e fechar um arquivo.
-
Mas podemos
pensar também
-
que o Python poderia facilitar
um pouquinho, não é verdade?
-
Existe sim um jeito
de isso ficar mais fácil.
-
É o comando with.
-
O comando with abre um arquivo,
faz toda a tratativa desse arquivo
-
e quando ele acaba de processar,
ele fecha automaticamente.
-
É como se tivéssemos um loop,
só que com o comando with.
-
Então aqui nós vamos
substituir o arquivo,
-
o "open" do arquivo,
pelo "with".
-
E vamos substituir
o "close" também.
-
Repare que esse comando exige
o alinhamento das linhas de dentro
-
para dizer que tudo
o que está dentro aqui
-
vai ser trabalhando
com o arquivo aberto.
-
Se rodarmos aqui,
ele vai ter o mesmo
-
comportamento
anterior.
-
A única coisa é que
ele vai fazer a abertura
-
e fechamento do arquivo
automaticamente.
-
Bom, se nós lemos,
agora vamos escrever.
-
Se vamos escrever uma linha
dentro do arquivo CSV,
-
nada mais justo do que usarmos
as facilidades do Python.
-
Vamos escrever uma lista
e essa lista vai ser gravada
-
dentro do arquivo
como um CSV.
-
Vamos supor aqui que temos
os dados do Jedi dentro dessa lista,
-
escrito Yoda, 900 anos
e falando que ele é Mestre.
-
Nós vamos abrir o arquivo
ainda usando a função "with".
-
Aqui.
-
Colocando que o modo
de abertura desse arquivo
-
é um append, ou seja,
nós vamos acrescentar essa linha.
-
Nós vamos dizer que a nova
linha é um espaço vazio,
-
ou seja, ele vai interpretar isso
como uma nova linha.
-
E vamos usar o "csv.writer",
ou seja, estamos dizendo aqui
-
que nós vamos transformar
esse arquivo CSV
-
e vamos dizer que o delimitador
aqui é uma vírgula.
-
Poderíamos utilizar
ponto e vírgula também.
-
Então a hora que ele gravar
aqui o Yoda ele vai pôr uma vírgula,
-
depois ele vai gravar 900,
vai pôr outra vírgula
-
e assim
até o fim da linha.
-
Vamos escrever com o "writerow",
que é "escreva uma linha".
-
Depois nós vamos apresentar o conteúdo
desse arquivo aqui no "jedis.csv".
-
Então aqui não temos, olhe.
-
Temos o Yoda aqui,
ele tem que aparecer de novo aqui,
-
o Yoda, 900, Mestre Jedi.
-
Vamos rodar esse arquivo
e ver o que aconteceu aqui.
-
Pronto.
-
Ele acrescentou essa linha aqui
de "Yoda, 900, Mestre".
-
É muito simples
trabalhar com o arquivo CSV.
-
Ele é um pouquinho mais estruturado
porque ele separa por campos.
-
Não é tão flexível
quanto um arquivo txt,
-
mas ele dá um poder maior
e usamos bastante arquivo CSV
-
para fazer carga de dados estruturados
dentro de banco de dados SQL,
-
tipo Oracle, SQL Server
e outros assim.
-
Esse outro
exemplo aqui
-
é quando nós queremos
gravar mais de uma linha.
-
Veja, vamos usar
a estruturação de lista.
-
Essa lista aqui,
Yoda até Mestre,
-
dentro de outra lista,
uma lista maior que é o "dados_jedi".
-
Desse jeito vamos precisar
construir um loop que vai consumir
-
todos os dados da lista maior
e vai gravar no arquivo CSV.
-
Olhando aqui no arquivo,
basta ter um "for"
-
e a gravação dentro dele.
-
Se olharmos o "dados_jedi", ainda
está aqui com "Yoda, 900, Mestre".
-
Podemos pôr aqui, "Mestre Jedi",
porque ele vai repetir essa linha,
-
já que estamos abrindo o arquivo
em modo de append,
-
e ele ainda vai acrescentar
outro Jedi aqui
-
chamado "Luke Skywalker".
-
Vamos rodar
e olhar o resultado disso.
-
Ele já rodou.
-
Se abrirmos aqui, olhe,
ele acrescentou as linhas 9 e 10.
-
O CSV bem como
os arquivos flat files
-
são muito utilizados
na carga de dados.
-
Você vai ter muitas oportunidades
para trabalhar com ele.