l’uscita non è riuscita l’esecuzione di script (python)

Ho visto varie domande sull’uscita di uno script dopo che un compito è completato con successo, ma c’è un modo per fare lo stesso con uno script che ha fallito? Sto scrivendo un test script che controlla solamente che una fotocamera funzioni correttamente. Se il primo test ha esito negativo, è più che probabile che i seguenti test verranno meno; voglio, pertanto, il primo fallimento di richiamare un’uscita e di fornire l’output dello schermo facendomi sapere che c’era un errore.

Io spero che questo sia abbastanza informazioni; fammi sapere se sono necessari ulteriori dettagli per aiutare me.

Stai parlando di test utilizzando il modulo unittest?
No, il mio script python è in realtà la chiamata di un programma in C++, il quale esegue il test. Nel caso la fotocamera non è accesa o la lente, lo script non risponde molto bene. Voglio che il mio script di smettere di cercare se è il caso. Ci potrebbero essere altri ostacoli che impediscono il test, così vorrei realizzare il mio script in modo tale che ogni errore potrebbe causare lo script per uscire.

OriginaleL’autore | 2009-07-24

4 risposte

  1. 19

    Sei solo alla ricerca per il exit() funzione?

    import sys
    
    if 1 < 0:
      print >> sys.stderr, "Something is seriously wrong."
      sys.exit(1)

    (Opzionale) parametro di exit() è il codice di ritorno lo script verrà restituito alla shell. Di solito, i valori diverso da 0, il segnale di un errore.

    il mio script simile a questo: import sys provare: # funzione loop… alza SystemExit except: print “errore” sys.exit() #piuttosto ridondante, a causa della precedente istruzione raise raise forze script per interrompere l’esecuzione con o senza un errore. Poi quando la tiro fuori e lasciare il sys.exit(), in modo che l’intero script da eseguire e riporta poi c’è stato un errore. Come potrei utilizzare la tua risposta per aiutare? Sono un nuovo python utente. Che cosa significa se 1<0? E ‘ dovuto rappresentare una condizione, e io sono solo la lettura è troppo lontano? Grazie Ancora
    if 1<0 era solo un esempio per una condizione di errore in cui si desidera interrompere l’esecuzione. Io non sono davvero sicuro di cosa esattamente avete bisogno di aiuto: print stampa un messaggio di errore e sys.exit() esce dallo script, non è che tutto quello che deve fare? Cosa volete di lavorare in modo diverso? Perché cercare un più complicato soluzione se semplice, non tutto ciò che è necessario?
    Penso che il mio problema è che non so come definire gli errori che potrebbero verificarsi. L’ad eccezione di parte della dichiarazione di prova non funziona il modo che mi aspettavo… (riconoscere l’errore e di rispondere di conseguenza)
    Per esempio, ho provato questo metodo su un breve script che semplicemente diviso 4 da una serie di numeri che iniziano con 0. L’esecuzione è disturbato a causa di una divisione per 0. In questo caso l’eccezione funzionato a causa di una condizione definita, mentre il test della fotocamera continua a funzionare. Io sono in grado di verbalizzare il tipo di errore (in inglese), ma non so quello che il computer ha bisogno di sentire se questo ha un senso…
    Quindi il problema principale è quello di rilevare nello script che si è verificato l’errore? Dove si verifica l’errore e quali effetti ha (in inglese)? Verifica l’errore nel programma C++ che hai citato?

    OriginaleL’autore sth

  2. 1

    Si può sollevare eccezioni per identificare le condizioni di errore. Il top a livello di codice è possibile catturare le eccezioni e gestire adeguatamente. È possibile utilizzare sys.uscita per uscire. E. g., in Python 2.x:

    import sys
    
    class CameraInitializationError(StandardError):
        pass
    
    def camera_test_1():
        pass
    
    def camera_test_2():
        raise CameraInitializationError('Failed to initialize camera')
    
    if __name__ == '__main__':
        try:
            camera_test_1()
            camera_test_2()
            print 'Camera successfully initialized'
        except CameraInitializationError, e:
            print >>sys.stderr, 'ERROR: %s' % e
            sys.exit(1)
    Grazie per la tua risposta. Potrei fare qualcosa di simile, che sarebbe interrompere lo script indipendentemente che l’errore è? Se è così, come faccio a configurarlo?
    Certo. Si può prendere un più alto livello di eccezione come StandardError o Eccezione o si può prendere tutto con un `eccezione:’.

    OriginaleL’autore Ryan Bright

  3. 0

    Si desidera controllare il codice di ritorno del c++ programma in esecuzione, e di uscita, se indica un fallimento. Nel codice riportato di seguito, /bin/false /bin/true sono programmi che sono uscita con errore e il successo dei codici, rispettivamente. Sostituire loro con il proprio programma.

    import os
    import sys
    
    status = os.system('/bin/true')
    if status != 0:
        # Failure occurred, exit.
        print 'true returned error'
        sys.exit(1)
    
    status = os.system('/bin/false')
    if status != 0:
        # Failure occurred, exit.
        print 'false returned error'
        sys.exit(1)

    Questo presuppone che il programma che si sta eseguendo esce con zero in caso di successo, diverso da zero in caso di fallimento.

    OriginaleL’autore bstpierre

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *