Python:

Tässä artikkelissa keskustelemme siitä, miten zip-arkisto luodaan suodattimien perusteella valituista tiedostoista tai hakemiston tiedostoista.

Pythonin zipfile-moduuli tarjoaa ZipFile-luokan zip-tiedostoihin liittyviä asioita varten. Käytetään tätä zip-arkistotiedoston luomiseen.

Tuo ensin luokka moduulista eli

from zipfile import ZipFile

Luo zip-arkisto useista tiedostoista Pythonissa

Vaiheet ovat,

  • Luo ZipFile-olio välittämällä uuden tiedoston nimi ja moodi ’w’ (write mode). Se luo uuden zip-tiedoston ja avaa sen ZipFile-objektin sisällä.
  • Kutsu write()-funktiota ZipFile-objektille lisätäksesi tiedostot siihen.
  • Kutsu close()-funktiota ZipFile-objektille sulkeaksesi zip-tiedoston.

Luo zip-tiedoston ’sample.zip’, jossa on annetut tiedostot sisällä.
Voidaan tehdä sama asia ”with open” -funktiolla . Se sulkee zip-tiedoston automaattisesti, kun ZipFile-objekti poistuu toimialueeltaan eli.

Luo zip-arkiston hakemistosta

Voidaksemme zipata hakemiston koko sisällön zip-arkistoon, meidän täytyy käydä läpi kaikki hakemistossa ja sen alihakemistoissa olevat tiedostot ja lisätä jokainen merkintä zip-tiedostoon ZipFile-ohjelmalla.write()

from zipfile import ZipFileimport osfrom os.path import basename# create a ZipFile objectwith ZipFile('sampleDir.zip', 'w') as zipObj: # Iterate over all the files in directory for folderName, subfolders, filenames in os.walk(dirName): for filename in filenames: #create complete filepath of file in directory filePath = os.path.join(folderName, filename) # Add file to zip zipObj.write(filePath, basename(filePath))

Se zipaa hakemiston koko sisällön yhteen zip-tiedostoon eli ’sampleDir.zip’. Sen sisältö on,

Pakkaa valitut tiedostot hakemistosta suodattimen tai jokerimerkkien perusteella

Voidaksemme zipata valitut tiedostot hakemistosta meidän on tarkistettava ehto jokaiselle tiedostopolulle iteroinnin aikana ennen kuin lisäämme sen zip-tiedostoon.

Luotaan funktio, joka Iteroi hakemiston yli ja suodattaa sisällön annetulla takaisinkutsulla. Vain suodattimen läpäisevät tiedostot lisätään zip-arkistoon eli.

from zipfile import ZipFileimport osfrom os.path import basename# Zip the files from given directory that matches the filterdef zipFilesInDir(dirName, zipFileName, filter): # create a ZipFile object with ZipFile(zipFileName, 'w') as zipObj: # Iterate over all the files in directory for folderName, subfolders, filenames in os.walk(dirName): for filename in filenames: if filter(filename): # create complete filepath of file in directory filePath = os.path.join(folderName, filename) # Add file to zip zipObj.write(filePath, basename(filePath))

Pakataan zip-arkistoon vain csv-tiedostot hakemistosta eli annetaan lambda-funktio argumenttina sille.

zipFilesInDir('sampleDir', 'sampleDir2.zip', lambda name : 'csv' in name)

Luotaan zip-arkisto ’sampleDir2.zip’, joka sisältää kaikki csv-tiedostot annetusta hakemistosta.

Kokonaisesimerkki on seuraavanlainen:

Vastaa

Sähköpostiosoitettasi ei julkaista.