Şu an yaklaşık 3 hafta boyunca python öğreniyorum ve şu anda dosya adı (yaklaşık 10.000) anahtar sözcüklere ve dosya adında görünen tarihe göre küçük bir komut dosyası yazmaya çalışıyorum. Belli bir tarihten önce dosyalar bir arşive eklenmelidir. Sıralama iyi çalışıyor, ancak arşivleme değilPython: Dizin olmadan dosyaları bir arşive mi aldınız?
Bir arşiv oluşturuyor - ad güzel - ancak arşivdeki dosyaların tam yolu. Eğer açarsam, şöyle görünür: folder1 -> folder2 -> folder3 -> files
.
Arşivi, yalnızca yapının değil, yalnızca dosyaları içerecek şekilde nasıl değiştirebilirim? Aşağıda
benim zip fonksiyonu ile snippet'idir,node
dosya tasnif önce olduğu yoludur,
folder
adına bir anahtar kelime tarafından sıralanmış dosyaları ile bir alt klasörü,
items
tarihe göre sıralanmış dosyalarla klasörler vardır. Ben 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
kullanıyorum
Ben de herhangi bir öneri ve iyileştirmelere açığım. yardım itibaren
Yorum yok ama docstring. Fonksiyonun ne işe yaradığını ve ne işe yaradığını açıklayın, nasıl çalıştığını ve dokumanın bunun için en yararlı olduğunu açıklayın. –
Harika çalışıyor, hızlı yardım için teşekkürler. – rny
@Jan Hudec: def ZipFolder (düğüm, zipdate) : docstringe ile böyle sth demek "" " " 'düğüm' alt klasörlerine 'zipdate' daha eski dosyaları fermuarlar"" – rny