Upload
vinicius-leodido-correia
View
63
Download
0
Embed Size (px)
Citation preview
IoT – Primeiros passos utilizandoPython com embarcados
Vinicius J. Leódido Correia | Engº Voluntário
Engenheiros Sem Fronteiras – Núcleo Rio de Janeiro
Agenda
Dia 1: Introdução, usos mais comuns, estrutura de dados em Python, leitura e
escrita de arquivos
Dia 2: Iniciando os passos básicos nas placas, GPIOs, as bibliotecas MRAA /
UPM, ligações seriais USB/TTL.
Dia 3: Lendo os dados dos sensores, encaminhando os dados para a nuvem,
entendendo e adaptando os dados no script Python para gravação via REST, realizando comunicações via MQTT.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
A linguagem foi criada em 1990 por Guido van Rossum, no Instituto Nacional de Pesquisa para Matemática e Ciência da Computação da Holanda (CWI) e tinha originalmente foco em usuários como físicos e engenheiros. O Python foi concebido a partir de outra linguagem existente na época, chamada ABC.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
O nome Python foi tirado por Guido van Rossum do programa da TV britânica Monty Python Flying Circus, e existem várias referências ao programa na própria documentação da linguagem, como, por exemplo, o repositório oficial de pacotes do Python se chamava Cheese Shop, que era o nome de um dos quadros do programa.Atualmente, o nome do repositório é Python Package Index11 (PyPI - pypi.python.org).
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Linguagem de Alto Nível
Sintaxe Clara e Concisa
Favorece Legibilidade do Cógido Fonte
Favorece o uso de estruturas de alto nível
Diversas bibliotecas prontas para uso
Portabilidade
Multiparadigma, funcional, orientada a objetos
Software Open Source (GPL)
Utilizada também para Scripts e execução de tarefas, comoPerl e Ruby
Frameworks Python para Web (Django é o mais conhecido)
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Integração com outras Linguagens
Implementação official pela PSF é escrita em C – Conhecidocomo CPython
Curiosidades: Utilizado para renderização de Vídeos e uso em VFX
LucasFilm’s, Pixar e outras Grandes companhias utilizam motor de renderização em Python
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
IDE’s: PyCharm (JetBrains)
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Execução de comandos no Python:
Obs.: Python opera somente com o código identado!Lembre-se de manter sempre a identação em seu código(padronizado com 4 espaços “ “).
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Execução em blocos de códigos
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Execução em blocos de códigos
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Tipagem Dinâmica – Duck Typing
No momento em que uma variável é criada através de atribuição, o interpretador define um tipo para a variável, com as operações que podem ser aplicadas.
Tipagem Forte o interpretador verifica se as operações são válidas e não faz coerções
automáticas entre tipos incompatíveis. Para realizar a operação entre tipos não compatíveis, é necessário converter explicitamente o tipo da variável ou variáveis antes da operação.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
>>> s = 5>>> t = “3”>>> print 'A soma de %d + %s e %d' %(s, t, (s+int(t)))
A soma de 5 + 3 e 8
Dia 1 – Introdução e Características
Controle de Fluxo
A partir da Versão 2.5, deu suporte ao Operador ternário:
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
print 'a é menor' if a < b else 'a não é menor‘ #Uso de Operador Ternário
>>> if a < b: #Uso padrão do controle de fluxo... print 'a é menor‘... else:... print 'a não é menor'
Dia 1 – Introdução e Características
Laços Estruturas de repetição para controle e processamento de coleções de
dados.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Laços Uso de Laços com FOR
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
#Soma de 0 a 99s = 0for x in range(1, 100):
s = s + xprint s
4950
Dia 1 – Introdução e Características
Laços Uso de Laços com WHILE
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
#Soma de 0 a 99s = 0x = 1while x < 100:
s = s + xx = x + 1
print s
4950
Dia 1 – Introdução e Características
Tipos de Dados
Tipos de Dados pré definidos no Python: Números (inteiros, reais, complexos, etc…)
Texto
Tipos de Dados que atuam como Coleções: Lista
Tupla
Dicionário
Tipos de Dados no Python podem ser: Mutáveis – Seu conteúdo pode ser alterado
Imutáveis – Quando seu conteúdo não se altera
Obs.: No Python, nomes de variáveis são referências, que podem seralteradas em tempo de execução!
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Tipos de Dados
Números – Funções Padrões de builtins:
Inteiro (int): i=1
Real de Ponto Flutuante (float): f=3.14
Complexo (complex): c = 3 + 4j
Inteiro longo (long) – Python faz gerenciamento automático entre inte long
Com essas funções, podemos realizer conversões para outros tipos:
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Conversões Numéricas
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Operações Aritméticas
Soma (+).
Diferença (-).
Multiplicação (*).
Divisão (/): entre dois inteiros funciona igual à divisão inteira. Em outros casos, o resultado é real.
Divisão inteira (//): o resultado é truncado para o inteiro imediatamente inferior, mesmo quando aplicado em números reais, porém neste casoo resultado será real também.
Módulo (%): retorna o resto da divisão.
Potência (**): pode ser usada para calcular a raiz, através de expoentes
fracionários (exemplo: 100 ** 0.5).
Positivo (+).
Negativo (-)
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Operações Lógicas
Menor (<).
Maior (>).
Menor ou igual (<=).
Maior ou igual (>=).
Igual (==).
Diferente (!=).
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Tipos de Dados
Texto:
As strings por si só, já são uma própria função builtin
Strings são imutáveis. Para alterar seu conteúdo, somente criandouma nova String ou adicionando um novo conteúdo
Tipos de Strings String padrão: s = ‘palavras ao vento’
String Unicode: s = u‘São apenas Palavras’
Também podem ser convertidas com a função unicode()
A inicialização de Strings podem ser com aspas simples ou duplas
Em várias linhas, desde que sejam com 3 aspas simples ou duplas
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Operações com Strings
# -*- coding: latin1 -*-s = 'Camel‘
# Concatenação print 'The ' + s + ' run away!‘
# Interpolaçãoprint 'tamanho de %s => %d' % (s, len(s))
# String tratada como sequênciafor ch in s:
print ch
# Strings são objetosif s.startswith('C'):
print s.upper()
# o que acontecerá?print 3 * s# 3 * s é consistente com s + s + s
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Interpolação de Strings Operador “%” é usado para fazer interpolação de strings. A interpolação
é mais eficiente no uso de memória do que a concatenação convencional.
Símbolos usados na interpolação: %s: string.
%d: inteiro.
%o: octal.
%x: hexacimal.
%f: real.
%e: real exponencial.
%%: sinal de percentagem.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
“Fatiando” Strings – Trabalhando com Slices Fatias de Strings podem ser obtidas, simplesmente colocando índices
entre colchetes após a string.
Índices podem ser definidos como: [inicio:fim + 1:intervalo]
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características Listas
Listas são coleções heterogêneas de objetos, que podem ser de qualquer tipo, inclusive outras listas.
As listas são mutáveis e podem ser “fatiadas” como as Strings
# -*- coding: latin1 -*-
# Uma nova lista: Brit Progs dos anos 70progs = ['Yes', 'Genesis', 'Pink Floyd', 'ELP']
# Varrendo a lista inteirafor prog in progs:
print prog
# Trocando o último elementoprogs[-1] = 'King Crimson‘
# Incluindoprogs.append('Camel')
# Removendoprogs.remove('Pink Floyd')
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Listas
# Ordena a lista
progs.sort()
# Inverte a lista
progs.reverse()
# Imprime numerado
for i, prog in enumerate(progs):
print i + 1, '=>', prog
# Imprime do segundo item em diante
print progs[1:]
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Listas Lista possui método pop(), como opção para uso de filas e pilhas:
# -*- coding: latin1 -*-
lista = ['A', 'B', 'C']
print 'lista:', lista
# A lista vazia é avaliada como falsa
while lista:
# Em filas, o primeiro item é o primeiro a sair
# pop(0) remove e retorna o primeiro item
print 'Saiu', lista.pop(0), ', faltam', len(lista)
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Listas# Mais itens na lista
lista += ['D', 'E', 'F']
print 'lista:', lista
while lista:
# Em pilhas, o primeiro item é o último a sair
# pop() remove e retorna o último item
print 'Saiu', lista.pop(), ', faltam', len(lista)
Possuem operações de ordenação (sort) e inversão (reverse) que são realizadas na própria lista, mas seu conteúdo não é alterado nessas operações.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Tuplas São bastante similar as listas, porém, são imutáveis. Não se pode
acrescentar, apagar ou fazer atribuições aos itens
Tupla: t = (a, b, c, d, …, n-1)
Tupla com 1 elemento: t = (1,)
Tupla vazia: t = ()
Elementos podem ser referenciados como na lista:elemento1 = t[0]
Listas podem ser convertidas em Tuplas e vice-versa:tupla = tuple(lista) #Conversão para Tupla
lista = list(tupla) #Conversão para Lista
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Tuplas Embora a tupla possa conter elementos mutáveis, esses elementos não
podem sofrer atribuição, pois modificaria a referência ao objeto.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
>>> t = ([1,2],4)>>> t[0].append(3)>>> t([1,2,3],4)>>>> t[0] = [1,2,3]
Traceback (most recent call last):File "<input>", line 1, in ?TypeError: object does not support item assignment>>>
Dia 1 – Introdução e Características
Tuplas As tuplas são mais eficientes do que as listas convencionais, pois
consomem menos recursos de memória do que as listas, por seremmais simples.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Outras Funções Seqüenciais de Builtins: Set – Seqüência mutável sem repetições
Frozenset – Seqüência imutável sem repetições
Implementam operações de conjuntos, como União, Intersecção, e diferença.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
# -*- coding: latin1 -*-
# Conjuntos de dadoss1 = set(range(3))s2 = set(range(10, 7, -1))s3 = set(range(2, 10, 2))
# Exibe os dadosprint 's1:', s1, '\ns2:', s2, '\ns3:', s3
#Saída
s1: set([0, 1, 2])s2: set([8, 9, 10])s3: set([8, 2, 4, 6])
Dia 1 – Introdução e Características
Outras Funções Seqüenciais de Builtins:
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
# Uniãos1s2 = s1.union(s2)print 'União de s1 e s2:\n', s1s2
# Diferençaprint 'Diferença com s3:\n', s1s2.difference(s3)
# Interseçãoprint 'Interseção com s3:\n', s1s2.intersection(s3)
# Testa se um set inclui outroif s1.issuperset([1, 2]):
print 's1 inclui 1 e 2'
# Testa se não existe elementos em comumif s1.isdisjoint(s2):
print 's1 e s2 não tem elementos em comum'
#Saída
União de s1 e s2:set([0, 1, 2, 8, 9, 10])
Diferença com s3:set([0, 1, 10, 9])
Interseção com s3:set([8, 2])
s1 inclui 1 e 2
s1 e s2 não tem elementos em comum
Dia 1 – Introdução e Características
Outras Funções Seqüenciais de Builtins:
Obs.: Quando uma lista é convertida para set, as repetições são descartadas.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Dicionários Um dicionário é uma lista de associações compostas por uma chave
única e estruturas correspondentes. Dicionários são mutáveis, tais como as listas.
A chave precisa ser de um tipo imutável, geralmente são usadas strings, mas também podem ser tuplas ou tipos numéricos. Já os itens dos dicionários podem ser tanto mutáveis quanto imutáveis. O dicionário do Python não fornece garantia de que as chaves estarão ordenadas.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
dicionario = {'a': a, 'b': b, ..., 'z': z}
Dia 1 – Introdução e Características
Dicionários
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Dicionários
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
dic = {'nome': 'Shirley Manson', 'banda': 'Garbage'}
#Acessando Elementosprint dic['nome']
#Adicionando Elementosdic['album'] = 'Version 2.0'
#Apagando um elementodel dic['album']
#Obtendo itens, chaves e valoresitens = dic.items()chaves = dic.keys()valores = dic.values()
#SaídaShirley Manson
Dia 1 – Introdução e Características
Dicionários Alguns exemplos de operações com Dicionários:
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
# Progs e seus albunsprogs = {'Yes': ['Close To The Edge', 'Fragile'],
'Genesis': ['Foxtrot', 'The Nursery Crime'],'ELP': ['Brain Salad Surgery']}
# Mais progsprogs['King Crimson'] = ['Red', 'Discipline']
# items() retorna uma lista de# tuplas com a chave e o valorfor prog, albuns in progs.items():
print prog, '=>', albuns
# Se tiver 'ELP', deletaif progs.has_key('ELP'):
del progs['ELP']
#Saída
Yes => ['Close To The Edge', 'Fragile'] ELP => ['Brain Salad Surgery']Genesis => ['Foxtrot', 'The Nursery Crime']King Crimson => ['Red', 'Discipline']
Dia 1 – Introdução e Características
Verdadeiro, Falso e Nulo
Em Python, o tipo booleano (bool) é uma especialização do tipo inteiro (int). O verdadeiro é chamado True e é equivalente a 1, enquanto o falso é chamado False e é equivalente a 0.
Os seguintes valores são considerados como falso (False):• False
• None
• 0 (zero)
• ‘’ ou “” – String vazia
• [ ] lista vazia
• ( ) tupla vazia
• { } dicionário vazio
• Outras estruturas com tamanho igual a zero
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Operadores Booleanos Possibilidade de construir condições mais complexas para controlar
desvios condicionais e laços
São os operadores: And, or, not, is, in
• and: retorna verdadeiro se e somente se receber duas expressões verdadeiras.
• or: retorna false se e somente se receber duas expressões falsas.
• not: retorna falso se receber uma expressão verdadeira e vice-versa
• is: retorna verdadeiro quando duas referências forem idênticas ao mesmo objeto e falso em caso contrário
• in: retorna verdadeiro se receber um item e uma lista e o item ocorrer uma ou mais vezes na lista e falso em caso contrário
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Funções São blocos de código identificados por um nome, que podem receber
parâmetros pré-determinados Podem retornar ou não objetos
Aceitam Doc Strings
Parâmetros opcionais. Caso não receba parâmetros em sua chamada, será igual ao default definido em na função
Aceitam parâmetros passados com nome, e para este caso, a ordem em que os parâmetros foram passados não é relevante.
Obs.: Doc Strings são strings que estão associadas a uma estrutura do Python. Nas funções, as Doc Strings são colocadas dentro do corpo da função, geralmente no começo. O objetivo das Doc Strings é servir de documentação para aquela estrutura.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
def dobro(x):""“Doc String: Esta função retorna o dobro do número x"""return x*2
Dia 1 – Introdução e Características
Funções São blocos de código identificados por um nome, que podem receber
parâmetros pré-determinados
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
def func(parametro1, parametro2=padrao):"""Doc String"""<bloco de código>
return valor
def fatorial(num):"""Fatorial implementado de forma recursiva""“
if num <= 1:return 1
else:return(num * fatorial(num – 1))
# Testando fatorial()print fatorial(5)
# Saída
120
Dia 1 – Introdução e Características
Funções Exemplo Fatorial sem recursão
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
def fatorial(n):n = n if n > 1 else 1j = 1for i in range(1, n):
j = j * ireturn j
# Testandofor i in range(1,6):
print i, ‘->’, fatorial(i)
# Saída
1 -> 12 -> 23 -> 64 -> 245 -> 120
Dia 1 – Introdução e Características
Funções Método Principal: podemos referenciar o nome de uma função ou
chamá-la como método principal
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
def func1(param1, param2):return value_func1
def func2(param):return value_func2
if __name__== “__main__” :func1(p1, p2)func2(p)
# Saída
value_func1value_func2
Dia 1 – Introdução e Características
Funções
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
def rgb_html(r=0, g=0, b=0):""“Converte RGB em #RRGGBB"""return “#%02x%02x%02x“, %(r, g, b)
def html_rgb(color=“#000000"):""“Converte #RRGGBB em RGB"""if color.startswitch(‘#’): color = color [1:]
r = int(color[:2], 16)g = int(color[2:4], 16)b = int(color[4:], 16)return r, g, b
if __name__== “__main__” :print rgb_html(200, 200, 255)print rgb_html(b=200, g=200, r=255)print html_rgb('#c8c8ff')
# Saída
#c8c8ff #ffc8c8(200, 200, 255)
Dia 1 – Introdução e Características
Funções
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
def rgb_html(r=0, g=0, b=0):""“Converte RGB em #RRGGBB"""return “#%02x%02x%02x“, %(r, g, b)
def html_rgb(color=“#000000"):""“Converte #RRGGBB em RGB"""if color.startswitch(‘#’): color = color [1:]
r = int(color[:2], 16)g = int(color[2:4], 16)b = int(color[4:], 16)return r, g, b
if __name__== “__main__” :print rgb_html(200, 200, 255)print rgb_html(b=200, g=200, r=255)print html_rgb('#c8c8ff')
# Saída
#c8c8ff #ffc8c8(200, 200, 255)
Dia 1 – Introdução e Características
Estrutura de Dados Abordaremos aqui alguns dos pontos falados anteriormente, citados em
usos com Listas, porém, descreveremos alguns métodos adicionais.
list.append(x): Adiciona um elemento ao fim da lista.
list.extend(L): Prolonga a lista, adicionando ao fim da lista atual os demais elementos da lista L.
list.insert(i, x): Insere um item em uma posição especificada, onde i = índice do elemento antes da inserção e x = o valor a ser inserido.
list.remove(x):Remove o primeiro item encontrado na lista cujo valor é igual a X
list.pop([i]): Remove o item na posição dada e o devolve. Se nenhum índice for especificado, list.pop() remove e devolve o último item na lista.
list.index(x): Devolve o índice do primeiro item cujo valor é igual a x, gerando ValueError se este valor não existe
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Estrutura de Dados list.count(x): Devolve o número de vezes que o valor x aparece na lista.
list.sort(): Ordena os itens na própria lista.
list.reverse(): Inverte a ordem dos elementos na lista (sem gerar uma nova lista).
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
>>> a = [66.25, 333, 333, 1, 1234.5]>>> print a.count(333), a.count(66.25), a.count('x')2 1 0>>> a.insert(2, -1)>>> a.append(333)>>> a [66.25, 333, -1, 333, 1, 1234.5, 333]>>> a.index(333)1>>> a.remove(333)>>> a[66.25, -1, 333, 1, 1234.5, 333]>>> a.reverse()>>> a[333, 1234.5, 1, 333, -1, 66.25]>>> a.sort()>>> a[-1, 1, 66.25, 333, 333, 1234.5]
Dia 1 – Introdução e Características
Estrutura de Dados Usando Lista como Pilha (LIFO – Last In, First Out).
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
>>> pilha = [3, 4, 5]>>> pilha.append(6)>>> pilha.append(7)>>> pilha[3, 4, 5, 6, 7]>>> pilha.pop()7>>> pilha[3, 4, 5, 6]>>> pilha.pop()6>>> pilha.pop()5>>> pilha[3, 4]
Dia 1 – Introdução e Características
Estrutura de Dados Usando Lista como Fila (FIFO – First In, First Out).
Devemos fazer o uso da Classe collections.deque
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
>>> from collections import deque>>> fila = deque(["Eric", "John", "Michael"])>>> fila.append("Terry") # Terry chega>>> fila.append("Graham") # Graham chega>>> fila.popleft() # O primeiro a chegar parte'Eric'>>> fila.popleft() # O segundo a chegar parte'John'>>> fila # O resto da fila, em ordem de chegadadeque(['Michael', 'Terry', 'Graham'])
Dia 1 – Introdução e Características Arquivos e I/O
Os arquivos no Python são representados por objetos do tipo file Arquivos podem ser abertos para leitura ('r'), gravação ('w') ou adição ('a'), em modo texto ou binário('b').
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
import sys
# Criando um objeto do tipo filetemp = open('temp.txt', 'w')
# Escrevendo no arquivofor i in range(100):
temp.write('%03d\n' % i)
# Fechandotemp.close()
temp = open('temp.txt')
# Escrevendo no terminalfor x in temp:
# Escrever em sys.stdout envia# o texto para a saída padrãosys.stdout.write(x)
temp.close()
Exemplo de Escrita:
Dia 1 – Introdução e Características Arquivos e I/O
Os arquivos no Python são representados por objetos do tipo file Arquivos podem ser abertos para leitura ('r'), gravação ('w') ou adição ('a'), em modo texto ou binário('b').
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
import sysimport os.path
# raw_input() retorna a string digitadafn = raw_input('Nome do arquivo: ').strip()
if not os.path.exists(fn):print 'Tente outra vez...'sys.exit()
# Numerando as linhasfor i, s in enumerate(open(fn)):
print i + 1, s,
# Imprime uma lista contendo linhas do arquivoprint open('temp.txt').readlines()
Exemplo de leitura:
Dia 1 – Introdução e Características Sistemas de Arquivos
Algumas funções para manipular Diretórios de Arquivos (fyle systems):
Muitas destas funcionalidades estão implementadas no módulo os.path:
os.path.basename(): retorna o componente final de um caminho
os.path.dirname(): retorna um caminho sem o componente final
os.path.exists(): verifica se um caminho existe (True), caso contrário acusa como inexistente (False).
os.path.getsize(): retorna o tamanho do arquivo em bytes
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 1 – Introdução e Características
Exercícios!
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
OBRIGADO
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Vinícius J. L. CorreiaE-mail: [email protected]/in/vinileodido
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Realização
Organização
Apoio