私は今、約3週間はPythonを学んできましたが、現在、ファイル名に表示されるキーワードと日付でファイル(約10.000)を並べ替えるための小さなスクリプトを書こうとしています。特定の日付より前のファイルをアーカイブに追加する必要があります。ソートは正常に動作しますが、アーカイブは行われません。Python:ディレクトリなしでアーカイブにファイルを取得するには?
アーカイブを作成します。名前は問題ありませんが、アーカイブにはファイルへの完全なパスが入ります。 私がそれを開くと、それはfolder1 -> folder2 -> folder3 -> files
のように見えます。
アーカイブに構造全体ではなくファイルのみが含まれるように変更するにはどうすればよいですか?以下は
はitems
は、日付順に並べ替えられたファイルとフォルダです、folder
は、名前のキーワードでソートされたファイルとサブフォルダで、node
ファイルがソートする前にしたパスで、私のジップ機能付きスニペットです。私は、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
を使用しています
は私はまた、任意の提案や改善に開いています。ヘルプ(zipファイル)から
コメントではなくdocstring。関数が何をしているのか、何が役に立つのかを説明してください。どのように動作するのか、そしてdocstringはそのために最も便利です。 –
すごくうまくいきます。 – rny
@Jan Hudec:docstringの場合は、次のようになります。 def ZipFolder(node、zipdate): "" "zipdate"よりも古いファイルは 'node'のサブフォルダに "" " – rny