2008-10-21 5 views
3

Sûrement il y a une sorte d'abstraction qui permet cela?Quelle est la meilleure façon sur python 2.3 pour Windows d'exécuter un programme comme ghostscript avec plusieurs arguments et espaces dans les chemins?

C'est essentiellement la commande

cmd = self._ghostscriptPath + 'gswin32c -q -dNOPAUSE -dBATCH -sDEVICE=tiffg4 
     -r196X204 -sPAPERSIZE=a4 -sOutputFile="' + tifDest + " " + pdfSource + '"' 

os.popen(cmd) 

cette façon ressemble vraiment sale pour moi, il doit y avoir une certaine façon pythonique

Répondre

5

Utilisez subprocess, il superseeds os.popen, qu'il ne soit pas beaucoup plus une abstraction:

from subprocess import Popen, PIPE 
output = Popen(["mycmd", "myarg"], stdout=PIPE).communicate()[0] 

#this is how I'd mangle the arguments together 
output = Popen([ 
    self._ghostscriptPath, 
    'gswin32c', 
    '-q', 
    '-dNOPAUSE', 
    '-dBATCH', 
    '-sDEVICE=tiffg4', 
    '-r196X204', 
    '-sPAPERSIZE=a4', 
    '-sOutputFile="%s %s"' % (tifDest, pdfSource), 
], stdout=PIPE).communicate()[0] 

Si vous avez seulement python 2.3 qui n'a pas le module de sous-processus, vous pouvez toujours utiliser os.popen

os.popen(' '.join([ 
    self._ghostscriptPath, 
    'gswin32c', 
    '-q', 
    '-dNOPAUSE', 
    '-dBATCH', 
    '-sDEVICE=tiffg4', 
    '-r196X204', 
    '-sPAPERSIZE=a4', 
    '-sOutputFile="%s %s"' % (tifDest, pdfSource), 
]))