Uczę się Pythona przez około 3 tygodnie i obecnie próbuję napisać mały skrypt do sortowania plików (około 10.000) według słów kluczowych i daty pojawiającej się w nazwie pliku. Pliki przed określoną datą należy dodać do archiwum. Sortowanie działa dobrze, ale nie archiwizuje. Tworzy archiwum - nazwa jest w porządku - ale w archiwum jest pełna ścieżka do plików. Jeśli go otworzę, wygląda to tak: folder1 -> folder2 -> folder3 -> files
.Python: Pobieranie plików do archiwum bez katalogu?
Jak mogę to zmienić tak, aby archiwum zawierało tylko pliki, a nie całą strukturę?
Poniżej znajduje się fragment z mojej funkcji zip, node
jest ścieżka gdzie pliki były przed sortowaniem, folder
jest podfolder z plików posortowanych według słowa kluczowego w nazwie, items
są foldery z plików posortowanych według daty.
Używam 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
Jestem również otwarty na wszelkie sugestie i ulepszeń.
Brak komentarzy, ale docstring. Wyjaśnij, co robi funkcja i do czego jest przydatna, a nie jak działa, a docstrukcja jest najbardziej przydatna w tym celu. –
niesamowite działa, thx za szybką pomoc. – rny
@Jan Hudec: z docstring masz na myśli coś takiego: def ZipFolder (węzeł, zipdate): "" "zip pliki starsze niż" zipdate "w podfolderach" węzła "" "" – rny