Backup

22 11 2007

#!/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

10 10 2007

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

10 10 2007


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

10 10 2007

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

10 10 2007

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 :P ython 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

10 10 2007

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 )

10 10 2007

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$





Analise do código ( WHILE )

10 10 2007

Analise do código:
Primeiro utilizamos a já conhecida instrução print para exibir uma mensagem. Depois configuramos uma variável chamada ok para o valor True. True e False são tipos boleanos e você pode considerá-los como equivalentes aos valores 1 e 0 respectivamente. Normalmente são usados em situações onde há necessidade de testar se uma condição é verdadeira ou falsa. É uma boa prática usar True e False em vez de valores númericos como zero e um. Observe os dois pontos depois do comando while identificando o início de um bloco de comandos. No bloco de comandos é solicitada uma entrada de dados do usuário e, se o caractere digitado for igual a zero, ok é configurado para False. O bloco de comandos é executado enquanto o caractere digitado for diferente de zero, pois enquanto isto ocorrer ok terá o valor True. Quando zero for digitado o programa encerrará o laço while e a próxima instrução após o laço será executada, no caso o último comando print.

richardson@Workaholic:~/Desktop/develop-python$ python en.py
Utilizando while
Digite qualquer caracter e zero para sair :1
Digite qualquer caracter e zero para sair :2
Digite qualquer caracter e zero para sair :d
Digite qualquer caracter e zero para sair :4
Digite qualquer caracter e zero para sair :5
Digite qualquer caracter e zero para sair :zero
Digite qualquer caracter e zero para sair :0
Encerrando……..





Python – While ( enquanto )

10 10 2007

Python – While

A instrução while permite executar um bloco de comandos repetidamente enquanto uma condição for verdadeira. A utilização de while é um exemplo do que é conhecido como looping.

Entendendo de forma lógica o comando while :

ENQUANTO condição:
comando 1
comando 2
…..
comando y

Enquanto a condição for verdadeira os comandos do bloco serão executados. Quando a condição for falsa o próximo comando fora do bloco será executado.

A sintaxe correta de while é:

while condição:
comandos

Exemplo:

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

print “Utilizando while”
ok = True
while ok:
caracter = raw_input(“Digite qualquer caracter e zero para sair :”)
if caracter == ‘0′:
ok = False
print ‘Encerrando……..





raw_input( ) e int( ) ????????

10 10 2007

Funções serão abordadas mais a frente. Aqui utilizamos duas funções: raw_input( ) e int( ). raw_input( ) exibe uma mensagem na tela e aguarda uma entrada de dados do usuário. Os dados recebidos por ela são entendidos pelo Python como string. Como nosso programa trabalha com números inteiros utilizamos a função int( ) para converter a entrada em inteiros.

Exemplo:

 #! /usr/bin/python
# -*- coding: iso-8859-1 -*-
d = int(raw_input(“Informe um número inteiro: “))