Creare un backup su dvd
  Home FAQ Contact Sign in
it.comp.lang.python only
 
Advanced search
POPULAR GROUPS

more...

 Up
Creare un backup su dvd         

Group: it.comp.lang.python · Group Profile
Author: Matteo
Date: May 8, 2008 14:26

Ciao a tutti,
premetto che sono un novizio di Python e che devo imparare ancora molto.
Mi sono avvicinato a questo linguaggio di programmazione per risolvere
alcuni problemi e ammetto di aver avuto le mie soddisfazioni, ma ora mi
sono arenato e ho bisogno di una mano.
L'intenzione era quella di creare un programma che data una cartella,
organizzasse le sottocartelle contenute in gruppi in modo che ognuno di
questi avesse una dimensione tale da stare in dvd. Spero di aver reso
l'idea.
Dopo un po' di lavoro sono riuscito a creare un programma il cui ritorno
è una lista in cui ogni elemento è a sua volta una mini-lista contenente
dimensione della cartella in MB e nome della cartella, ordinata in senso
decrescente.
Il passo successivo è l'organizzazione dei gruppi. In teoria il
programma dovrebbe prendere ogni elemento contenente dimensione e nome
della cartella, confrontare la sua dimensione con lo spazio libero
nell'ipotetico dvd e se ci sta scrivere a video il nome della cartella e
cancellare l'elemento dalla lista, altrimenti andare avanti con un altra
coppia dimensione-nome della cartella fino a trovarne una che occupi lo
spazio ancora disponibile. Infine quando l'ipotetico dvd è pieno
scrivere DVD completo, saltare una riga e riprendere per creare un altro
dvd.
Il processo è abbastanza complicato da spiegare anche a parole,
figuriamoci se sono stato in grado di metterlo giù in Python. Chiedo
quindi aiuto a voi della community.
Posto il mio codice

backupdvd.py

import os
import sys

# Ottiene la dimensione della cartella
def calcDirSize(arg, dir, files):
for file in files:
stats = os.stat(os.path.join(dir, file))
size = stats[6]
arg.append(size)

# Ritorna la dimensione della cartella
def getDirSize(dir):
sizes = []
os.path.walk(dir, calcDirSize, sizes)
total = 0
for size in sizes:
total = total + size
return (round(total/1048576.0, 2))

# Cartella di cui si vuole creare il backup
backupfolder = sys.argv[1]

# Ottiene la lista delle sottocartelle di primo livello
listacartelle = os.listdir(backupfolder)

# Crea una lista vuota che conterra' le sottocartelle e le dimensioni
Cartelle_Dimensioni = []

# Ottiene la dimensione di ogni sottocartella
for cartella in listacartelle:
dir = os.path.join(backupfolder, cartella)
size = (getDirSize(dir))
posizione = len(Cartelle_Dimensioni)
Cartelle_Dimensioni[posizione:posizione] = [[size, cartella]]

# Ordina le sottocartelle secondo la dimensione in ordine crescente
Cartelle_Dimensioni.sort()
Cartelle_Dimensioni.reverse()
print Cartelle_Dimensioni

# Imposta dimensioni del dvd
Dvd = 4139

# Crea la lista di cartelle per dvd
for size_dir in Cartelle_Dimensioni :
size = size_dir[0]
cartella = size_dir[1]
if Dvd >= 0 and size <= Dvd :
print cartella
Dvd = Dvd - size
i = Listacartelle.index(cartella)
del Listacartelle[i]
elif Dvd >= 0 and size > Dvd:

else :
Dvd = 4139
print ('DVD completo')
print

Vi ringrazio anticipatamente per le vostre "dritte".
Ciao
Matteo
8 Comments
diggit! del.icio.us! reddit!

RELATED THREADS
SubjectArticles qty Group
Re: Factory pressed dvd movies, ps2, psp, xbox backups for sale !!!alt.comp.jgaa ·
Re: Backup on DVD [OT]local.linux.greek.users ·