[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