ldmotta

Python Subprocess

Posted in Python by ldmotta on maio 11, 2010

Uma dica simples!!

O módulo subprocess lhe permite gerar novos processos, e obter os seus códigos de retorno. Este módulo pretende substituir vários outros módulos e funções mais antigas, tais como:

os.system
os.spawn *
os.popen *
popen2 .*
comandos .*

Leia mais…

Neste pequeno exemplo, vou mostrar como compactar vários arquivos com o comando zip sendo chamado pelo móduoo subprocess.

1° Digamos que você tenha uma lista dos arquivos que serão “zipados”, esta lista pode vir do banco ou de outra forma dependendo de cada situação:

#lista dos arquivos que serão compactados
li=["generic.html", "generic.json", "generic.xml"]

#caminho dos arquivos que serão compactados
path="/home/user/sites/seu_site/diretorio_dos_arquivos/"

import os
# monta o caminho completo para cada arquivo
li=[os.path.join(path,item) for item in li]

import subprocess
# comando que será utilizado no subprocess, nele passamos uma lista contendo o comando ["zip", "nome_do_arquivo_destino"]
cmd=["zip", "generic.zip"]

# adiciona o comando do subprocess à lista de arquivos
cmd.extend(li)

# finalmente passa este comando para ser executado pelo subprocess.call()
subprocess.call(cmd)