1. Manipulando Arquivos

  • Caso você tenha problemas com acentos nos arquivos:
  • Primeiro, recomendamos a leitura do material sobre Formato Unicode, ao final do capítulo 4.
  • Uma forma de resolver esse problema, é abrir o arquivo em um editor de texto como o Sublime Text, clicar em File - Save with Encoding e então salvar com encoding UTF-8.
  • Outra opção é incluir o parâmetro encoding=’utf8’ ao abrir o arquivo para leitura ou escrita.

Obs: Crie um arquivo txt, chamado arquivo1.txt no diretório “arquivos” na pasta onde está seu Jupyter Notebook, digite a frase: Python é uma linguagem poderosa! e salve o arquivo.

# lendo o arquivo
import os 
arr = os.listdir('arquivos')
print(arr)
['arquivo1.txt', 'binary.csv', 'cientista.txt', 'dados.json', 'file.csv', 'json_data.txt', 'numeros.csv', 'reduce.png', 'salarios.csv', 'testandoerros.txt', 'teste.txt']

1.1. Lendo Arquivos

# Abrindo o arquivo para leitura
arq1 = open("arquivos/arquivo1.txt","r")
# Lendo o arquivo
print(arq1.read())
Escrita do arquivo modificada Acrescentando conteúdo
# Contar o número de caracteres
print(arq1.tell())
52
# Retornar para o iníco do arquivo
print(arq1.seek(0,0))
0
# Ler os primeiros 10 caracteres
print(arq1.read(10))
Escrita do

1.2. Gravando Arquivos

# Abrindo arquivo para gravação
arq2 = open("arquivos/arquivo1.txt", "w")
# Como abrimos o arquivo apenas para gravação, não podemos usar comandos de leitura.
print(arq2.read())
---------------------------------------------------------------------------

UnsupportedOperation                      Traceback (most recent call last)

<ipython-input-76-c83c8e14ed9b> in <module>
      1 # Como abrimos o arquivo apenas para gravação, não podemos usar comandos de leitura.
----> 2 print(arq2.read())


UnsupportedOperation: not readable
# Gravando arquivo
arq2.write("Escrita do arquivo modificada")
29
arq2.close()
# Lendo arquivo gravado
arq2 = open("arquivos/arquivo1.txt", "r")
print(arq2.read())
Escrita do arquivo modificada
# Acrescentando conteúdo
arq2 = open("arquivos/arquivo1.txt", "a")
arq2.write(" Acrescentando conteúdo")
23
arq2.close()
arq2 = open("arquivos/arquivo1.txt", "r")
print(arq2.read())
Escrita do arquivo modificada Acrescentando conteúdo
# Retornando ao início do arquivo para leitura
arq2.seek(0,0)
0
print(arq2.read())
Escrita do arquivo modificada Acrescentando conteúdo

1.3. Automatizando o processo de gravação

fileName = input("Digite o nome do arquivo: ")
Digite o nome do arquivo:  arquivo1
fileName = fileName + ".txt"
arq3 = open(fileName, "w")
arq3.write("Incluindo novo texto no arquivo criado")
38
arq3.close()
arq3 = open(fileName, "r")
print(arq3.read())
Incluindo novo texto no arquivo criado
arq3.close()

1.4. Abrindo um dataset em uma única linha

Faça download do arquivo salarios.csv em nosso repositório no github. Este arquivo foi obtido no site de dados abertos do governo da cidade de Chicago, nos EUA: https://data.cityofchicago.org/

# open file
f = open('arquivos/salarios.csv', 'r')
data = f.read()
rows = data.split('\n')
#print(rows)

1.5. Dividindo um dataset em colunas

f = open('arquivos/salarios.csv', 'r')
data = f.read()
rows = data.split('\n')
full_data = []
for row in rows:
    split_row = row.split(",")
    full_data.append(split_row)
# print(full_data)

1.6. Contando as linhas de um arquivo

f = open('arquivos/salarios.csv', 'r')
data = f.read()
rows = data.split('\n')
full_data = []
for row in rows:
    split_row = row.split(",")
    full_data.append(split_row)
count = 0
for row in full_data:
    count += 1   # Equivalente a: count = count + 1
print(count)
32184

1.7. Contando o número de colunas de um arquivo

f = open('arquivos/salarios.csv', 'r')
data = f.read()
rows = data.split('\n')
full_data = []
for row in rows:
    split_row = row.split(",")
    full_data.append(split_row)
    first_row = full_data[0]
count = 0
for column in first_row:
    count = count + 1
    
# Outra solução possível
# for column in full_data[0]:
#     count = count + 1
print(count)
4

1.8. Gravando arquivo pelo Jupyter Notebook

%%writefile arquivos/teste.txt   
Olá este arquivo foi gerado pelo próprio Jupyter Notebook.
Podemos gerar quantas linhas quisermos e o Jupyter gera o arquivo final.
Overwriting arquivos/teste.txt
arq4 = open("arquivos/teste.txt", 'r',encoding='utf8')
arq4.read()
'Olá este arquivo foi gerado pelo próprio Jupyter Notebook.\nPodemos gerar quantas linhas quisermos e o Jupyter gera o arquivo final.\n'
# Estamos no final do arquivo e não há mais nada para ler
arq4.read()
''
# Retornando ao início do arquivo
arq4.seek(0)
0
arq4.seek(0)
arq4.readlines()
['Olá este arquivo foi gerado pelo próprio Jupyter Notebook.\n',
 'Podemos gerar quantas linhas quisermos e o Jupyter gera o arquivo final.\n']
# Podemos usar um loop for para ler o arquivo
for line in open('arquivos/teste.txt',encoding='utf8'):
    print(line)
Olá este arquivo foi gerado pelo próprio Jupyter Notebook.

Podemos gerar quantas linhas quisermos e o Jupyter gera o arquivo final.

1.9. Importando um dataset com Pandas

import pandas as pd
file_name = "arquivos/binary.csv"
df = pd.read_csv(file_name)
df.head()
admit gre gpa rank
0 0 380 3.61 3
1 1 660 3.67 3
2 1 880 4.00 1
3 1 640 3.19 4
4 0 520 2.93 4
file2 = "arquivos/salarios.csv"
df2 = pd.read_csv(file2)
df2.head()
Name Position Title Department Employee Annual Salary
0 AARON, ELVIA J WATER RATE TAKER WATER MGMNT $88968.00
1 AARON, JEFFERY M POLICE OFFICER POLICE $80778.00
2 AARON, KARINA POLICE OFFICER POLICE $80778.00
3 AARON, KIMBERLEI R CHIEF CONTRACT EXPEDITER GENERAL SERVICES $84780.00
4 ABAD JR, VICENTE M CIVIL ENGINEER IV WATER MGMNT $104736.00

.. include:: arquivos2.md