SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Threading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Threading Made Easy! A Busy Developer’s Guide to Kotlin CoroutinesThreading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Threading Made Easy! A Busy Developer’s Guide to Kotlin CoroutinesLauren Yew
 
Polymorphism in C# Function overloading in C#
Polymorphism in C# Function overloading in C#Polymorphism in C# Function overloading in C#
Polymorphism in C# Function overloading in C#Abid Kohistani
 
Java 8 - CJ
Java 8 - CJJava 8 - CJ
Java 8 - CJSunil OS
 
Collections Framework
Collections FrameworkCollections Framework
Collections FrameworkSunil OS
 
JAVA Variables and Operators
JAVA Variables and OperatorsJAVA Variables and Operators
JAVA Variables and OperatorsSunil OS
 
Introduction to kotlin and OOP in Kotlin
Introduction to kotlin and OOP in KotlinIntroduction to kotlin and OOP in Kotlin
Introduction to kotlin and OOP in Kotlinvriddhigupta
 
JavaScript
JavaScriptJavaScript
JavaScriptSunil OS
 
Creating a frame within an applet
Creating a frame within an appletCreating a frame within an applet
Creating a frame within an appletmyrajendra
 
Beyond the basics: advanced SQL with MariaDB
Beyond the basics: advanced SQL with MariaDBBeyond the basics: advanced SQL with MariaDB
Beyond the basics: advanced SQL with MariaDBMariaDB plc
 
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IBest Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IICS
 
Machine learning ( Part 2 )
Machine learning ( Part 2 )Machine learning ( Part 2 )
Machine learning ( Part 2 )Sunil OS
 
java-thread
java-threadjava-thread
java-threadbabu4b4u
 
Kotlin Bytecode Generation and Runtime Performance
Kotlin Bytecode Generation and Runtime PerformanceKotlin Bytecode Generation and Runtime Performance
Kotlin Bytecode Generation and Runtime Performanceintelliyole
 

Mais procurados (16)

JUnit 4
JUnit 4JUnit 4
JUnit 4
 
Threading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Threading Made Easy! A Busy Developer’s Guide to Kotlin CoroutinesThreading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Threading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
 
Polymorphism in C# Function overloading in C#
Polymorphism in C# Function overloading in C#Polymorphism in C# Function overloading in C#
Polymorphism in C# Function overloading in C#
 
Java 8 - CJ
Java 8 - CJJava 8 - CJ
Java 8 - CJ
 
Collections Framework
Collections FrameworkCollections Framework
Collections Framework
 
Log4 J
Log4 JLog4 J
Log4 J
 
JAVA Variables and Operators
JAVA Variables and OperatorsJAVA Variables and Operators
JAVA Variables and Operators
 
Pytest KT.pptx
Pytest KT.pptxPytest KT.pptx
Pytest KT.pptx
 
Introduction to kotlin and OOP in Kotlin
Introduction to kotlin and OOP in KotlinIntroduction to kotlin and OOP in Kotlin
Introduction to kotlin and OOP in Kotlin
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Creating a frame within an applet
Creating a frame within an appletCreating a frame within an applet
Creating a frame within an applet
 
Beyond the basics: advanced SQL with MariaDB
Beyond the basics: advanced SQL with MariaDBBeyond the basics: advanced SQL with MariaDB
Beyond the basics: advanced SQL with MariaDB
 
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IBest Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part I
 
Machine learning ( Part 2 )
Machine learning ( Part 2 )Machine learning ( Part 2 )
Machine learning ( Part 2 )
 
java-thread
java-threadjava-thread
java-thread
 
Kotlin Bytecode Generation and Runtime Performance
Kotlin Bytecode Generation and Runtime PerformanceKotlin Bytecode Generation and Runtime Performance
Kotlin Bytecode Generation and Runtime Performance
 

Mais de Marcel Caraciolo

Como interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonComo interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonMarcel Caraciolo
 
Joblib: Lightweight pipelining for parallel jobs (v2)
Joblib:  Lightweight pipelining for parallel jobs (v2)Joblib:  Lightweight pipelining for parallel jobs (v2)
Joblib: Lightweight pipelining for parallel jobs (v2)Marcel Caraciolo
 
Construindo softwares de bioinformática para análises clínicas : Desafios e...
Construindo softwares  de bioinformática  para análises clínicas : Desafios e...Construindo softwares  de bioinformática  para análises clínicas : Desafios e...
Construindo softwares de bioinformática para análises clínicas : Desafios e...Marcel Caraciolo
 
Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Marcel Caraciolo
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratórioMarcel Caraciolo
 
Python on Science ? Yes, We can.
Python on Science ?   Yes, We can.Python on Science ?   Yes, We can.
Python on Science ? Yes, We can.Marcel Caraciolo
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Marcel Caraciolo
 
Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Marcel Caraciolo
 
Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Marcel Caraciolo
 
Benchy, python framework for performance benchmarking of Python Scripts
Benchy, python framework for performance benchmarking  of Python ScriptsBenchy, python framework for performance benchmarking  of Python Scripts
Benchy, python framework for performance benchmarking of Python ScriptsMarcel Caraciolo
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Marcel Caraciolo
 
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...Marcel Caraciolo
 
Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Marcel Caraciolo
 
Construindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonConstruindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonMarcel Caraciolo
 
Python, A pílula Azul da programação
Python, A pílula Azul da programaçãoPython, A pílula Azul da programação
Python, A pílula Azul da programaçãoMarcel Caraciolo
 
Construindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduceConstruindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduceMarcel Caraciolo
 
Como Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilComo Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilMarcel Caraciolo
 
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Marcel Caraciolo
 
Aula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosAula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosMarcel Caraciolo
 

Mais de Marcel Caraciolo (20)

Como interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonComo interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com Python
 
Joblib: Lightweight pipelining for parallel jobs (v2)
Joblib:  Lightweight pipelining for parallel jobs (v2)Joblib:  Lightweight pipelining for parallel jobs (v2)
Joblib: Lightweight pipelining for parallel jobs (v2)
 
Construindo softwares de bioinformática para análises clínicas : Desafios e...
Construindo softwares  de bioinformática  para análises clínicas : Desafios e...Construindo softwares  de bioinformática  para análises clínicas : Desafios e...
Construindo softwares de bioinformática para análises clínicas : Desafios e...
 
Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratório
 
Python on Science ? Yes, We can.
Python on Science ?   Yes, We can.Python on Science ?   Yes, We can.
Python on Science ? Yes, We can.
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3
 
Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)
 
Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?
 
Big Data com Python
Big Data com PythonBig Data com Python
Big Data com Python
 
Benchy, python framework for performance benchmarking of Python Scripts
Benchy, python framework for performance benchmarking  of Python ScriptsBenchy, python framework for performance benchmarking  of Python Scripts
Benchy, python framework for performance benchmarking of Python Scripts
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?
 
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
 
Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks
 
Construindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonConstruindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com Python
 
Python, A pílula Azul da programação
Python, A pílula Azul da programaçãoPython, A pílula Azul da programação
Python, A pílula Azul da programação
 
Construindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduceConstruindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduce
 
Como Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilComo Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no Brasil
 
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
 
Aula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosAula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursos
 

Criando e abrindo arquivos ZIP com Python

  • 1. Criando e Abrindo Arquivos ZIP Marcel Pinheiro Caraciolo Python  Aula  Extra   1
  • 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’)   hKp://docs.python.org/library/zipfile.html   Python  Aula  Extra   2
  • 3.   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
  • 4.   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
  • 5. 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
  • 6.   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
  • 7.   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
  • 8.   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
  • 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’)   >>>  info  =  z.ge@nfo(“README.txt”)   >>>  info.filename,  info.file_size   README.txt    75   Python  Aula  Extra   9
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 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   >>>  import  zlib   >>>  zf  =  zipfile.ZipFile(‘example.zip’,  ‘w’)   >>>  zf.write(“README.txt”  ,  compress_type  =  zipfile.ZIP_DEFLATED)   >>>  zf.close()     Python  Aula  Extra   14
  • 15. 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
  • 16. 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
  • 17. 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
  • 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’)   >>>  zf.writepy(“.”)   >>>  zf.close()     Python  Aula  Extra   18
  • 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  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
  • 20. 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
  • 21. Criando e Abrindo Arquivos ZIP Marcel Pinheiro Caraciolo Python  Aula  Extra   21