Massazippaaja

Ezku 25.06.05 23:38

Skannaa annetun kansion rekursiivisesti ja pakkaa syötettyyn regexpiin täsmäävät tiedostot kansionsa nimen mukaiseen zippiin.

 Tekstiversio  Arvo: 2 (2 ääntä)  Äänestä: +  -
# -*- coding: cp1252 -*-

import os
import os.path
import re
import zipfile

def scan (folder, match):
    place = len(folder) -1
    if(folder[place]=="\\"):
       folder = folder[:place]
    for root, dirs, files in os.walk(folder):
        filelist = []
        for file in files:
            if re.search(match,file):
                filelist.append(file)
        compress(root, filelist)

def compress (root, filelist):
    if len(filelist)>0:
        target = '%s.zip' % (root)
        output = ''
        zip = zipfile.ZipFile(target,"w")
        for filename in filelist:
            zip.write(root + '\\' + filename)
            output += " %s" % (filename)
        print "Folder: %s\nFiles:\n%s\nInto: %s" % (root + '\\',output,target)
        zip.close()

def GetInput (note):
    input = raw_input(note)
    if len(input)>0:
        return input
       
       
def main():
    while 1:
        print "--- Match files with regexp, pack in zip with folder name ---"
        folder = GetInput("Folder to look in: ")
        match = GetInput("Regexp to match: ")
        scan(folder,match)
        break

if __name__ == "__main__":
    main()
 

ZcMander 00:20 26.6.05 
kansion paikan vois laittaa argumentteihin niin tuosta vois olla jollekkin jopa hyötyä.
Ezku 00:31 26.6.05 
Kyseessä ensimmäinen Python-skriptini jota käytin joskus kuvien arkistointiin. Ei luonnollisesti mikään mestariteos, vaan päätinpä pistää kun näin tyhjän alueen :p
Ztane 22:47 26.6.05 
Et vissiin käytä unixia :d
Ztane 10:06 1.7.05 
Tämä ei oo käyttöjärjestelmäriippumaton, koska olettaa että \ on hakemistoerotin. os.pathiakin saa käyttää.