Arquivo da categoria ‘Python’

Backup

Publicado: novembro 22, 2007 em Python

#!/usr/bin/env python

# Backup files
# by hachid

import sys,os, shutil, filecmp

MAXVERSIONS=100

def backup_files(tree_top, bakdir_name=’bak’):

for dir, subdirs, files in os.walk(tree_top):
backup_dir = os.path.join(dir, bakdir_name)
if not os.path.exists(backup_dir):
os.makedirs(backup_dir)
# To avoid recursing into sub-directories
subdirs[:] = [d for d in subdirs if d != bakdir_name]
for f in files:
filepath = os.path.join(dir, f)
destpath = os.path.join(backup_dir, f)
# Check existence of previous versions
for index in xrange(MAXVERSIONS):
backup = ‘%s.%2.2d’ % (destpath, index)
abspath = os.path.abspath(filepath)

if index > 0:
# No need to backup if file and last version
# are identical
old_backup = ‘%s.%2.2d’ % (destpath, index-1)
if not os.path.exists(old_backup): break
abspath = os.path.abspath(old_backup)

try:
if os.path.isfile(abspath) and filecmp.cmp(abspath, filepath, shallow=False):
continue
except OSError:
pass

try:
if not os.path.exists(backup):
print ‘Copying %s to %s…’ % (filepath, backup)
shutil.copy(filepath, backup)
except (OSError, IOError), e:
pass

if __name__==”__main__”:
# run backup on specified directory
try:
tree_top = sys.argv[1]
except IndexError:
tree_top = ‘.’
backup_files(tree_top)

Python: Funções

Publicado: outubro 10, 2007 em Python

Funções são pequenos trechos de código reutilizáveis. Elas permitem dar um nome a um bloco de comandos e rodar este bloco usando o nome, a partir de qualquer lugar do programa, quantas vezes você quiser. Isto é conhecido como “chamar” a função. Nós já usamos algumas funções internas do Python como len e range.

Definição

Funções são definidas usando a palavra-chave def. Esta é seguida pelo nome da função, um par de parênteses que pode envolver algumas variáveis, dois pontos e o bloco de comandos:

Definindo uma função

#!/usr/bin/python
# -*- coding: iso-8859-1 -*-

# utilizando funções

# Definindo a função alow()
def alow():
print ‘Alow Mundo’

# Chamando a função alow()
alow()

 

Python – Instrução continue

Publicado: outubro 10, 2007 em Python


A instrução continue faz a execução pular para a próxima iteração no laço desprezando os comandos posteriores. Exemplo:

Usando o comando continue

#!/usr/bin/python
# -*- coding: iso-8859-1 -*-

print ‘Usando o continue’

while True:
s = raw_input(‘Digite alguma palavra com mais de três letras ou SAIR para encerrar :’)
if s == ‘SAIR’:
break
if len(s) > 3:
print ‘Você digitou uma string de tamanho maior que 3’
continue
# se len(s) > 3, “continue” fará com que a instrução abaixo
# seja desprezada e o programa pulará para a próxima iteração
print ‘Você digitou uma string de tamanho menor que 3’
print ‘Encerrando…..’

Análise – Break

Publicado: outubro 10, 2007 em Python

A instrução while True: define uma laço infinito (mais uma vez não esqueça dos dois pontos). Este laço iria ser executado indefinidamente se não fosse por nossa instrução break. No bloco de instruções do laço nós solicitamos uma entrada do usuário, se ele entrar com a string SAIR, chamados break e o laço é encerrado, senão utilizamos a função interna len( ) para retornar o tamanho da string. Observe também que desta vez utilizamos print com dois argumentos separado por vírgula. Ao separar os argumentos de print com vírgula nós suprimimos o caractere de nova linha ao final, o que faz com que os argumentos sejam exibidos lado a lado. Neste caso print insere um espaço entre cada argumento:

>>> print ‘usando’,’print com’,2,’vírgulas’
usando print com 2 vírgulas
>>>

A instrução break também pode ser usada com o laço for.

Python – break

Publicado: outubro 10, 2007 em Python

A instrução break é usada para quebrar um laço, isto é, parar a execução do looping mesmo que a condição ainda seja verdadeira ou a seqüencia de itens ainda não tenha sido toda iterada.

Exemplo:

Usando o comando break

#!/usr/bin/python
# -*- coding: iso-8859-1 -*-

print ‘usando o break’

while True:
s= raw_input(‘Digite alguma palavra ou SAIR para encerrar :’)
if s == ‘SAIR’:
break
print ‘Você digitou uma string de tamanho’, len(s)
print ‘Encerrando…..’

richardson@Workaholic:~/Desktop/develop-python$ python break.py
usando o break
Digite alguma palavra ou SAIR para encerrar :Python Destroi
Voc� digitou uma string de tamanho 14
Digite alguma palavra ou SAIR para encerrar :sair
Voc� digitou uma string de tamanho 4
Digite alguma palavra ou SAIR para encerrar :SAIR
Encerrando…..
richardson@Workaholic:~/Desktop/develop-python$

Python – Análise do FOR

Publicado: outubro 10, 2007 em Python

Neste programa eu imprimi uma seqüência de números. A seqüência de números foi gerada utilizando a função interna range( ). Nós fornecemos dois números e range( ) retorna uma seqüência que inicia com o primeiro número e vai até o segundo número exclusive, ou seja, o segundo número não entra na seqüência. No caso range(1,11) retorna a seqüência de 1 até 10. O incremento usado por padrão pela função range( ) é um, porém isto pode ser alterado, basta inserir um terceiro número como argumento. Por exemplo range(1,11,3) retorna [1, 4, 7, 10].

O laço for então itera sobre a seqüencia. for n in range(1,11) equivale a for n in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] que funciona como se atribuíssemos cada número (ou objeto) da seqüencia a n, um de cada vez, e então executássemos o bloco de comandos para cada valor de n. Neste caso nós apenas imprimimos o valor.

Lembre-se que o laço for…..in trabalha com qualquer seqüencia. Aqui nós usamos uma lista de números gerada pela função interna range( ), mas podemos usar qualquer tipo de seqüencia que tenha qualquer tipo de objeto.

Python – for ( para )

Publicado: outubro 10, 2007 em Python

A instrução for…..in é outra instrução de looping que itera sob uma seqüência de objetos, isto é percorre cada objeto de uma seqüência. Nós veremos mais sobre seqüências no futuro. Agora você só precisa saber que uma seqüência é uma coleção de itens ordenados.

Exemplo:

Usando o comando for

richardson@Workaholic:~/Desktop/develop-python$ python for.py
usando o for
1
2
3
4
5
6
7
8
9
10
richardson@Workaholic:~/Desktop/develop-python$