2012-01-08 3 views
1

... en utilisant AutoKey 0.81.4 sur Ubuntu 10,04AttributeError: objet 'CalledProcessError' n'a pas d'attribut 'sortie'

  1. relativement nouveau pour Linux (< 1an)
  2. Ceci est le premier python je a écrit

le script suivant pour AutoKey continue à échouer avec l'erreur suivante. Qu'est-ce que je ne reçois pas ici?

Script name: 'find files script' 
Traceback (most recent call last): 
    File "/usr/lib/python2.6/dist-packages/autokey/service.py", line 442, in execute 
    exec script.code in self.scope 
    File "<string>", line 13, in <module> 
AttributeError: 'CalledProcessError' object has no attribute 'output' 

Le script

import time 

time.sleep(0.10) 
retCode, args = dialog.input_dialog("Files to Find","enter a file name") 
fmt = "find/-name \"{0}\" -type f -print 2>/dev/null " 
if retCode == 0: 
    if len(args) > 0: 
     cmd = fmt.format(args) 
     #dialog.info_dialog(title="the command",message=cmd) 
     try: 
      rc = system.exec_command(cmd, getOutput=True) 
     except subprocess.CalledProcessError, e: 
      dialog.info_dialog(title="the return",message=str(e.output)) 
+0

De quel module est la commande system.exec_? – soulcheck

Répondre

-1

Changez le e.output juste e. Utiliser str (e) vous obtiendra la chaîne d'erreur. Vous pouvez rechercher des exceptions pour découvrir les attributs qu'elles prennent en charge. Je ne pense pas que la production en soit une.

+1

Ceci est incorrect. str (e) sur une CalledProcessException donne: "La commande '' a renvoyé l'état de sortie non nul ". Le document [docs] (http://docs.python.org/2/library/subprocess.html#subprocess.CalledProcessError.output) indique que e.output doit afficher la sortie du processus enfant. – Symmetric

0

L'attribut de sortie n'existe pas jusqu'à Python 2.6. Vous pourriez utiliser subprocess.Popen et communiquer(). Ou vous pourriez backport subprocess.check_output (également pas dans 2.6) suivant this.

Questions connexes