• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Arquivos Zip com Python - Aula PyCursos
 

Arquivos Zip com Python - Aula PyCursos

on

  • 2,742 views

Aula sobre ZipFiles com Python pelo PyCursos.

Aula sobre ZipFiles com Python pelo PyCursos.
Instrutor: Marcel Pinheiro Caraciolo

Statistics

Views

Total Views
2,742
Views on SlideShare
1,951
Embed Views
791

Actions

Likes
2
Downloads
35
Comments
0

2 Embeds 791

http://www.pycursos.com 788
http://www.linkedin.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Arquivos Zip com Python - Aula PyCursos Arquivos Zip com Python - Aula PyCursos Presentation Transcript

    • Criando e Abrindo Arquivos ZIP Marcel Pinheiro Caraciolo Python  Aula  Extra  1
    •   Conhecendo o zipfile  Python   tem   suporte   para   abertura   e   escrita   de   arquivos   ZIP.  Através   do   módulo   zipfile   é   possível   comprimir,   adicionar,   ler   ,  escrever  e  até  importar  módulos  a  par@r  de  um  arquivo  ZIP.   >>>  import  zipfile   >>>  zf  =  zipfile.ZipFile(example.zip,  r’)   hKp://docs.python.org/library/zipfile.html   Python  Aula  Extra   2
    •   Conhecendo o zipfile  Python   tem   suporte   para   abertura   e   escrita   de   arquivos   ZIP.  Através   do   módulo   zipfile   é   possível   comprimir,   adicionar,   ler   ,  escrever  e  até  importar  módulos  a  par@r  de  um  arquivo  ZIP.   >>>  import  zipfile   >>>  zf  =  zipfile.ZipFile(example.zip,  r’)   Simples  não  ?!   hKp://docs.python.org/library/zipfile.html   Python  Aula  Extra   3
    •   Abrir Arquivos Zip  Sempre  importante  verificarmos  se  o  arquivo  corrente  desejado  se  refere  ou  não  a  um  arquivo  ZIP  válido.      A  função  para  este  caso  é  o  is_zipfile(‘filename’).   >>>  import  zipfile   >>>  zipfile.is_zipfile(“README.txt”)   False   >>>zipfile.is_zipfile(“example.zip”)     True        O    que  ele  verifica  não  é  apenas  se  tem  a  terminação  .zip  e  sim  se     referencia  a  uma  estrutura  válida  de  arquivo  comprimido.   Python  Aula  Extra   4
    • Abrir Arquivos Zip    Para  ler  quais  os  nomes  de  arquivos  existentes  em  um  arquivo  zip,  use  a  função  namelist():     >>>  import  zipfile   >>>  zf  =  zipfile.ZipFile(‘example.zip’,  ‘r’)   >>>  print  zf.namelist()   [“README.txt”]   Python  Aula  Extra   5
    •   Abrir Arquivos Zip  Ele   pode   acessar   todos   os   meta-­‐dados   de   um   arquivo   Zip,   por  meio  das  funções  infolist()  ou  ge0nfo().     import  date@me   import  zipfile     def  print_info(archive_name):          zf  =  zipfile.ZipFile(archive_name)          for  info  in  zf.infolist():                  print  info.filename                  print  tComment:t,  info.comment                  print  tModified:t,  date@me.date@me(*info.date_@me)                  print  tSystem:tt,  info.create_system,  (0  =  Windows,  3  =  Unix)                  print  tZIP  version:t,  info.create_version                  print  tCompressed:t,  info.compress_size,  bytes                  print  tUncompressed:t,  info.file_size,  bytes                  print   Python  Aula  Extra   6
    •   Abrir Arquivos Zip  Ele   pode   acessar   todos   os   meta-­‐dados   de   um   arquivo   Zip,   por  meio  das  funções  infolist()  ou  ge0nfo().     $  python  zipfile_infolist.py     README.txt                  Comment:                  Modified:              2007-­‐12-­‐16  10:08:52                  System:                  3  (0  =  Windows,  3  =  Unix)                  ZIP  version:        23                  Compressed:          63  bytes                  Uncompressed:      75  bytes   Python  Aula  Extra   7
    •   Abrir Arquivos Zip  Ele   pode   acessar   todos   os   meta-­‐dados   de   um   arquivo   Zip,   por  meio  das  funções  infolist()  ou  ge0nfo().     import  date@me   import  zipfile     def  print_info(archive_name):          zf  =  zipfile.ZipFile(archive_name)   Existem   outras   informações   que          for  info  in  zf.infolist():   podem   ser   obdas   além   das   apresentadas.   Recomendo   a                  print  info.filename   leitura   das   especificações                  print  tComment:t,  info.comment   PKZIP  Applicaon  Note.                  print  tModified:t,  date@me.date@me(*info.date_@me)                  print  tSystem:tt,  info.create_system,  (0  =  Windows,  3  =  Unix)                  print  tZIP  version:t,  info.create_version                  print  tCompressed:t,  info.compress_size,  bytes                  print  tUncompressed:t,  info.file_size,  bytes                  print   Python  Aula  Extra   8
    • Abrir Arquivos Zip    Usando   o   ge0nfo()   no   caso   quando   você   já   sabe   o   nome   do  arquivo.     >>>  import  zipfile   >>>  zf  =  zipfile.ZipFile(‘example.zip’,  ‘r’)   >>>  info  =  z.ge@nfo(“README.txt”)   >>>  info.filename,  info.file_size   README.txt    75   Python  Aula  Extra   9
    • Abrir Arquivos Zip    Usando   o   ge0nfo()   no   caso   quando   você   já   sabe   o   nome   do  arquivo.     >>>  import  zipfile   >>>  zf  =  zipfile.ZipFile(‘example.zip’,  ‘r’)   S e   o   a r q u i v o   n ã o   f o r   encontrado   o   ge#nfo()   >>>  info  =  z.ge0nfo(“README.txt”)   retorna   uma   exceção   do   po   >>>  info.filename,  info.file_size   KeyError.   README.txt    75   Python  Aula  Extra   10
    • Extraindo arquivos de um Zip    Para  acessar  o  conteúdo  do  arquivo,  basta  u@lizar  o  método  read()  passando  como  parâmetro  o  nome  do  arquivo.    >>>  import  zipfile  >>>  zf  =  zipfile.ZipFile(‘example.zip’,  ‘r’)  >>>  data  =  z.read(“README.txt”)  >>>  repr(data)  The  examples  for  the  zipfile  module  use  this  file  and  example.zip  as  data.n          Lembrando  que  o  conteúdo  lido  é  no  formato  de  string,    logo  se  for   arquivos  binários,  ele  retornará  uma  string  de  bytes!   Python  Aula  Extra   11
    • Extraindo arquivos de um Zip    Podemos   chamar   diretamente   também   o   extractall()   que   extrai  todos  os  arquivos  para  um  diretório  especificado.    >>>  import  zipfile  >>>  zf  =  zipfile.ZipFile(‘example.zip’,  ‘r’)  >>>  zf.extractall()  >>>  f  =  open(‘README.txt’)  >>>  f.read()  The  examples  for  the  zipfile  module  use  this  file  and  example.zip  as  data.n         Você   pode   inclusive   alterar   o   caminho   pela   variável   path   e   tambem   definir  quais  serao  os  arquivos  extraidos  pela  variavel  lista  members.   Python  Aula  Extra   12
    • Criando novos arquivos Zip    Para   criar   um   novo   arquivo,   basta   instanciar   ZipFile   no   modo  escrita.  Para  adicionar  arquivos,  use  o  método  write()     >>>  import  zipfile   >>>  zf  =  zipfile.ZipFile(‘example.zip’,  ‘w’)   >>>  zf.write(“README.txt”)   >>>  zf.close()     Python  Aula  Extra   13
    • Mas se eu quiser adicionar   compressão ?  O   Módulo   zlib   é   necessário.   Se   es@ver   disponível   você   pode  configurar     o   modo   de   compressão.   O   padrão   é   o  zpfile.ZIP_STORED     >>>  import  zipfile   >>>  import  zlib   >>>  zf  =  zipfile.ZipFile(‘example.zip’,  ‘w’)   >>>  zf.write(“README.txt”  ,  compress_type  =  zipfile.ZIP_DEFLATED)   >>>  zf.close()     Python  Aula  Extra   14
    • Mas se eu quiser adicionar   compressão ?  O   Módulo   zlib   é   necessário.   Se   es@ver   disponível   você   pode  configurar     o   modo   de   compressão.   O   padrão   é   o  zpfile.ZIP_STORED     >>>  import  zipfile   Se  déssemos  um  print  em     >>>  zf  =  zipfile.ZipFile(‘example.zip’,  ‘w’)   genfo(‘README.txt’)  obteríamos:   >>>  zf.write(“README.txt”  ,  compress_type  =  zipfile.ZIP_DEFLATED)     README.txt   >>>  zf.close()                  Comment:                    Modified:              2007-­‐12-­‐16  10:08:50                  System:                  3  (0  =  Windows,  3  =  Unix)                  ZIP  version:        20                  Compressed:          63  bytes                  Uncompressed:      75  bytes     Python  Aula  Extra   15
    • Dicas interessantes    Se   quisermos   adicionar   um   arquivo   dentro   de   um   arquivo   zip   com  um  nome  diferente  do  nome  original  ?       >>>  zf.write(‘README.txt’,  arcname  =  ‘NOT_README.txt’)    Se   quisermos   escrever   dados   que   não   vem   de   um   arquivo.  Simplemente  escrevendo  string  de  bytes  em  um  arquivo  direto  ?     Mensagem  em  string     >>>  zf.writestr(‘from_string.txt’,    ‘vamos  adicionar  direto  de  uma  string’)   Python  Aula  Extra   16
    • Adicionando arquivos    Adicionar  novos  arquivos  a  um  arquivo  zip  existente  basta  abri-­‐lo  no  modo  append    ‘a’.     >>>  import  zipfile   >>>  zf  =  zipfile.ZipFile(‘example.zip’,  ‘a’)   >>>  zf.write(“exercicio.py”)   >>>  zf.close()     Python  Aula  Extra   17
    • Importando módulos de um arquivo zip    Desde   a   versão   2.3,   Python   permite   importar   módulos   direto   de    um  arquivo  zip  desde  que  este  esteja  no  sys.path  .         Para  escrita  de  arquivos:     >>>  import  zipfile     >>>  zf  =  zipfile.PyZipFile(‘example.zip’,  mode=‘w’)   >>>  zf.writepy(“.”)   >>>  zf.close()     Python  Aula  Extra   18
    • Importando módulos de um arquivo zip    Desde   a   versão   2.3,   Python   permite   importar   módulos   direto   de    um  arquivo  zip  desde  que  este  esteja  no  sys.path  .         Para  escrita  de  arquivos:     >>>  import  zipfile     >>>  zf  =  zipfile.PyZipFile(‘example.zip’,  mode=‘w’)   Quando   chamamos   a   função   writepy(),   a   >>>  zf.writepy(“.”)   classe   PyZipFile   procura   no   diretório   passado   como   parâmetro   arquivos   .py   e   >>>  zf.close()   adiciona   os   arquivos   compilados   .pyo     ou  .pyc  dentro  do  arquivo  zip.  Se  estes  não   exisrem  um  .pyc  é  criado  e  adicionado.       Modo  debug>        zf.debug    =3   Python  Aula  Extra   19
    • Importando módulos de um arquivo zip    Desde   a   versão   2.3,   Python   permite   importar   módulos   direto   de    um  arquivo  zip  desde  que  este  esteja  no  sys.path  .         Para  leitura  de  arquivos:     >>>  import  sys     >>>  sys.path.insert(0,  ‘example.zip’)   >>>  import  example   >>>  example.__file__   example.zip/example.pyc   Python  Aula  Extra   20
    • Criando e Abrindo Arquivos ZIP Marcel Pinheiro Caraciolo Python  Aula  Extra  21