In un related question, ho chiesto dove trovare la documentazione per la funzione C "attendere". Questo è stato un tentativo di capire i codici di ritorno per il modulo commands.getstatusoutput(). Stackoverflow è arrivato, ma la documentazione non ha aiutato. Ecco cosa mi lascia perplesso:Come interpretare il codice di stato in python commands.getstatusoutput()
#!/usr/bin/python
import commands
goodcommand = 'ls /'
badcommand = 'ls /fail'
status, output = commands.getstatusoutput(goodcommand)
print('Good command reported status of %s' % status)
status, output = commands.getstatusoutput(badcommand)
print('Bad command reported status of %s' % status)
Quando eseguito su OS X (Leopard) ottengo il seguente output: (. Il che corrisponde alla documentazione)
$ python waitest.py
Good command reported status of 0
Bad command reported status of 256
Su OS X, facendo un "ls/fallisco ; echo $? " ottiene il seguente risultato:
$ ls /fail ; echo $?
ls: /fail: No such file or directory
1
Quando viene eseguito su Linux (Ubuntu Hardy) ottengo il seguente output:
$ python waitest.py
Good command reported status of 0
Bad command reported status of 512
Su Ubuntu, fare "ls/fail" ottiene un 2:
$ ls /fail ; echo $?
ls: cannot access /fail: No such file or directory
2
Quindi Python sembra moltiplicare i codici di stato per 256. Eh? Questo è documentato da qualche parte?
la [risposta da @Schof] (http://stackoverflow.com/a/1535675/52074) risponde alla domanda "quando si usa' commands.getstatusoutput() 'perché i codici di uscita sono moltiplicati per 256?" direttamente e con codice di esempio. Le altre due risposte più o meno dicono "usa" sottoprocesso "invece di' commands.getstatusoutput() '" o "ecco come usare il sottoprocesso". –