[FoLUG] python
Stefano Giunchi
stefano.giunchi@soasi.com
Mer 13 Apr 2005 10:08:36 CEST
> al prossimo che dice che il c e' complicato gli infilo una saponetta in
> bocca e poi la testa in un secchio... finche' non ha finito la
> saponetta.
Vediamo chi fa gli sciaqui col sapone :)
A me sembra tutto molto più leggibile di un ***puntatoreapuntatore.
Ogni comando è "leggibile", a parte forse getmtime...
Se invece parliamo di potenza e velocità, ovviamente, non c'è paragone...
Inoltre, se parliamo di codice C scritto con criterio (indentatura in
primis), già va meglio, ma il C (come perl e php) non obbligano a scrivere
in modo "chiaro".
Allego una nuova versione, commentata e un pò ripulita; ho messo lo script
principale nella funzione Main, così posso uscire senza usare il
sys.exit.
############################################################################
##
## ZIPPY
##
## zippy.py <path> <est> <mingg>
##
## zippa i file a partire da <path>, con l'estensione <est> e più vecchi
## di <mingg>
##
## es: zippy.py \\stcg1\Documenti\2_STCSpa\2_2002\2200 doc 730
##
## <est> può essere anche una lista, separata da "|"
##
## es: zippy.py \\stcg1\Documenti\2_STCSpa\2_2002\2200 doc|xls|dwg 730
############################################################################
import os
import string
import re
import time
import zipfile
def Main():
try:
#assegno i parametri a tre variabili
path = os.sys.argv[1]
est = string.lower(os.sys.argv[2])
mingg = int(os.sys.argv[3])
except:
print "Uso: zyppy.py <path> <est> <mingg>"
return
#prendo l'ora attuale, in secondi, da epoch
ta = time.time()
#scorro la directory, e tutte le sue sottodirectory, e tutti i files
contenuti
for root, dirs, files in os.walk(path):
for F in files:
nomefile = string.lower(os.path.join(root,F))
#verifico con una re se l'estensione del file (ultimi tre caratteri, cioè
#nomefile[-3:]) coincide con una delle estensioni passate
if re.compile(est).match(nomefile[-3:]):
tf = os.path.getmtime(nomefile) #data del file, in secondi, da epoch
if ((ta - tf) / 86400) > mingg: #controllo se il file è più vecchio di
mingg
Zippa(nomefile)
#comprime il file e lo rimuove, se è andato tutto bene
def Zippa(nomefile):
nomezip = string.lower(nomefile) [:-3] + 'zip'
print "Zippa: " + nomefile + " => " + nomezip
#se il file esiste, vado in append, altrimenti in creazione
if os.path.exists (nomezip):
modo = "a"
else:
modo = "w"
try:
Z = zipfile.ZipFile (nomezip, modo, 8)
Z.write (nomefile)
Z.close ()
os.remove(nomefile)
except:
pass
Main()
Maggiori informazioni sulla lista
FoLUG