Ho studiato python da circa 3 settimane e attualmente sto cercando di scrivere un piccolo script per ordinare i file (circa 10.000) con parole chiave e data che appaiono nel nome del file. I file prima di una determinata data devono essere aggiunti a un archivio. L'ordinamento funziona correttamente, ma non l'archiviazionePython: acquisizione di file in un archivio senza la directory?
Crea un archivio - il nome è valido - ma nell'archivio è il percorso completo dei file. Se lo apro, sembra: folder1 -> folder2 -> folder3 -> files
.
Come posso modificarlo in modo che l'archivio contenga solo i file e non l'intera struttura?
Qui di seguito è un frammento con la mia funzione di cerniera, node
è il percorso in cui i file sono stati prima della cernita, folder
è una sottocartella con i file ordinati per una parola chiave nel nome, items
sono le cartelle con i file ordinati per data.
Sto usando Python 2,6
def ZipFolder(node, zipdate):
xynode = node + '/xy'
yznode = node + '/yz'
for folder in [xynode,yznode]:
items = os.listdir(folder)
for item in items:
itemdate = re.findall('(?<=_)\d\d\d\d-\d\d', item)
print item
if itemdate[0] <= zipdate:
arcname = str(item) + '.zip'
x = zipfile.ZipFile(folder + '/' + arcname, mode='w', compression = zipfile.ZIP_DEFLATED)
files = os.listdir(folder + '/' + item)
for f in files:
x.write(folder + '/' + item + '/' + f)
print 'writing ' + str(folder + '/' + item + '/' + f) + ' in ' + str(item)
x.close()
shutil.rmtree(folder + '/' + item)
return
Sono anche aperto a qualsiasi suggerimento e miglioramenti.
Non commenti ma docstring. Spiega cosa fa la funzione e per cosa è utile, non come funziona e la docstring è più utile per quello. –
fantastico funziona, grazie per l'aiuto veloce. – rny
@Jan Hudec: con docstring intendi sth in questo modo: def ZipFolder (nodo, zipdata): "" "file zip più vecchi di 'zipdate' nelle sottocartelle del 'nodo'" "" – rny