Leitura de Arquivos via
Entrada Padrão (stdin)
Prof. Dr. André Grégio
Prof. Dr. Paulo Almeida
Leitura da entrada padrão
O módulo “sys” provê acesso a funções para interagir com o interpretador, como
ler argumentos da entrada padrão.
Para um programa receber o valor “5” via linha de comando, como abaixo
$ python meu_script.py 5
Você digitou o número 5.
o interpretador tem que obter o argumento dado e processá-lo dentro do script.
Leitura da entrada padrão
$ python meu_script.py 5
Você digitou o número 5.
import sys
entrada = sys.argv[1]
print(“Você digitou o número {}.”.format(entrada))
Leitura da entrada padrão
$ python meu_script.py 5
lista de argumentos
Você digitou o número 5. advindos da linha de
comando e passados
import sys para o script Python!
entrada = sys.argv[1]
print(“Você digitou o número {}.”.format(entrada))
Leitura da entrada padrão
primeiro elemento
$ python meu_script.py 5 -15 nome 0 sim (índice 0) é o próprio
programa!
print(sys.argv)
['meu_script.py', '5', '-15', 'nome', '0', 'sim']
Leitura da entrada padrão/função
import sys
def fat(n):
res = 1
for i in range(2,n+1):
res *= i
print(res)
n = int(sys.argv[1])
fat(n)
Leitura de arquivos via stdin
Passo a passo:
1. Considere um arquivo de texto
1.1. Receba o caminho do arquivo
1.2. Abra o arquivo
1.3. Leia o arquivo linha por linha
Leitura de arquivos via stdin
Passo a passo:
1. Considere um arquivo de texto
1.1. Receba o caminho do arquivo ($ python3 processa_texto.py /Docs/poesia.txt )
arq_nome = sys.argv[1]
1.2. Abra o arquivo
1.3. Leia o arquivo linha por linha
Leitura de arquivos via stdin
Passo a passo:
1. Considere um arquivo de texto
1.1. Receba o caminho do arquivo ($ python3 processa_texto.py /Docs/poesia.txt)
arq_nome = sys.argv[1]
1.2. Abra o arquivo
1.3. Leia o arquivo linha por linha
Leitura de arquivos via stdin
Passo a passo:
1. Considere um arquivo de texto
1.1. Receba o caminho do arquivo ($ python3 processa_texto.py /Docs/poesia.txt)
arq_nome = sys.argv[1]
1.2. Abra o arquivo
arq_handle = open(arq_nome)
1.3. Leia o arquivo linha por linha
Leitura de arquivos via stdin
Passo a passo:
1. Considere um arquivo de texto
1.1. Receba o caminho do arquivo ($ python3 processa_texto.py /Docs/poesia.txt)
arq_nome = sys.argv[1]
1.2. Abra o arquivo
arq_handle = open(arq_nome)# aberto para leitura!
1.3. Leia o arquivo linha por linha
texto = arq_handle.read()
Leitura de arquivos via stdin
Passo a passo:
1. Considere um arquivo de texto
1.1. Receba o caminho do arquivo ($ python3 processa_texto.py /Docs/poesia.txt)
arq_nome = sys.argv[1]
1.2. Abra o arquivo
arq_handle = open(arq_nome)
1.3. Leia o arquivo linha por linha
texto = arq_handle.read() # lê para uma string
Leitura de arquivos via stdin
import sys
arq_nome = sys.argv[1] # caminho para arquivo
arq_handle = open(arq_nome)# abre para leitura
texto = arq_handle.read() # lê para uma string
print(texto)
print(type(texto))
Leitura de arquivos via stdin
$ python3 processa_texto.py texto.txt
import sys
arq_nome = sys.argv[1] # caminho para arquivo
arq_handle = open(arq_nome) # abre para leitura
texto = arq_handle.read() # lê para uma string # texto.txt
print(texto)
linha 1
linha 2
linha 3
print(type(texto))
linha 1
linha 2
linha 3
<class 'str'>
Leitura de arquivos via stdin
import sys
texto = open(sys.argv[1]).read() # texto.txt
linha 1
linhas = texto.split("\n") linha 2
linha 3
print(linhas)
print(type(linhas))
Leitura de arquivos via stdin
import sys
texto = open(sys.argv[1]).read()
linhas = texto.split("\n") # texto.txt
print(linhas) linha 1
print(type(linhas)) linha 2
linha 3
$ python3 processa_texto.py texto.txt
['linha 1', 'linha 2', 'linha 3', '']
<class 'list'>
Leitura de arquivos via stdin
import sys
texto = open(sys.argv[1]). readline()
print(texto) # texto.txt
print(type(texto)) linha 1
linha 2
$ python3 processa_texto.py texto.txt linha 3
linha 1
<class 'str'>
Leitura de arquivos via stdin
import sys
texto = open(sys.argv[1]). readlines()
print(texto) # texto.txt
print(type(texto)) linha 1
linha 2
$ python3 processa_texto.py texto.txt linha 3
['linha 1\n', 'linha 2\n', 'linha 3\n']
<class 'list'>
Leitura de arquivos via stdin
import sys
texto = open(sys.argv[1]). read().splitlines()
print(texto) # texto.txt
print(type(texto)) linha 1
linha 2
$ python3 processa_texto.py texto.txt linha 3
['linha 1', 'linha 2', 'linha 3']
<class 'list'>
Leitura de arquivos via stdin
import sys
arq = open(sys.argv[1])
texto = arq.read().splitlines()
print(texto)
print(type(texto)) Lembrar de
arq.close() fechar o
arquivo!
Escrita de arquivos (modos)
arq_saida = open(sys.argv[2], 'w')
● ‘w’ abre o arquivo em modo escrita
● Se o arquivo *não* existir, cria um novo
● Senão, sobrescreve!
Escrita de arquivos (modos)
arq_saida = open(sys.argv[2], 'a')
● ‘a’ abre o arquivo em modo append
● Se o arquivo *não* existir, cria um novo
● Senão, insere no final!