Sintassi non valida su python dichiarazione di prova

Nel mio script ho una grande Mentre: prova: esecuzione di un ciclo. All’interno di questo, ho voglia di aumentare alcune indicazioni nel caso in cui una foto è stato scaricato dalla mia fotocamera e ridimensionata, qui è quello che il mio codice simile all’interno del mio più grande script python:

import os.path
try os.path.isfile('/home/pi/CompPictures' + picturenumber + '.JPG'):
    os.system('sudo rm /home/pi/Pictures/IMG_0001.JPG')
    os.system('sudo rm /home/pi/output.bin')
    picturenumber = int(picturenumber))+1
except:
    pass

picturenumber contiene una stringa ‘1’ per iniziare e poi incrementare.

Ho solo voglia di eseguire uno. Quindi, in sostanza sono in esecuzione attraverso la mia più grande codice continuamente, quindi per ogni spazzare attraverso il più grande ciclo, voglio controllare questa dichiarazione di prova una volta se il file esiste, eliminare alcuni file e aumentare il puntatore.

Ricevo il seguente errore.

  File "pijob.py", line 210
    try os.path.isfile('/home/pi/CompPictures' + picturenumber + '.JPG'):
         ^
SyntaxError: invalid syntax

Estremamente nuovo per python…quindi spero che non si tratta di un semplice errore 🙁

OriginaleL’autore user2208604 | 2013-03-28

3 risposte

  1. 6

    Hai bisogno di una nuova linea e una :. Prova questo:

    try:
        os.path.isfile('/home/pi/CompPictures' + picturenumber + '.JPG') #
        os.system('sudo rm /home/pi/Pictures/IMG_0001.JPG')
        os.system('sudo rm /home/pi/output.bin')
        picturenumber = int(picturenumber))+1
    except:
        pass

    È possibile includere un finally istruzione da eseguire codice a prescindere dal risultato:

    try:
        #code
    except:
        pass
    finally:
        #this code will execute whether an exception was thrown or not
    Grazie! Ho voglia di codice che controlla se un file esiste e quindi se lo fa, è necessario eliminare alcuni file e aumentare un puntatore. Sembra che la dichiarazione di prova non può essere la migliore dal momento che non importa cosa, elimina i file e aumenta il puntatore a prescindere se il file esiste. Forse dovrei cercare un’altra dichiarazione?
    Si può controllare se il file esiste: if filename in os.listdir('path/to/dir'):. Fa che aiutare?
    Sembra come avrebbe. È la sintassi semplicemente se il nome di file nel sistema operativo.listdir(‘path/della/cartella’): roba senza “uscire” type sintassi? grazie!
    Avrete bisogno di una nuova linea e di un rientro dopo la if filename in os.listdir('path/to/dir'):. Quindi è possibile scrivere il codice che si desidera eseguire se il file esiste. Inoltre, se questo risponde alle tue domande, si dovrebbe accettare come corretto per aiutare altre persone che visitare questa pagina in futuro. =)
    non so nemmeno che “accettare come corretto” era un’opzione x_x. di apprendimento.

    OriginaleL’autore That1Guy

  2. 5

    provare come questo,

    import os.path
    try :
        os.path.isfile('/home/pi/CompPictures' + picturenumber + '.JPG') #
        os.system('sudo rm /home/pi/Pictures/IMG_0001.JPG')
        os.system('sudo rm /home/pi/output.bin')
        picturenumber = int(picturenumber))+1
    except:
        pass

    python provare sintassi,

    try:
       some_code
    except:
       pass
    Domanda veloce, se si passa attraverso la prova e successi che prima os.percorso.isfile e non può aprire il file…cosa succede? non è uscita la prova?
    Se si verifica un’eccezione durante l’esecuzione della prova clausola, il resto della clausola è saltato. Poi se il tipo corrisponde l’eccezione di nome dopo l’eccezione parole chiave, ad eccezione di clausola viene eseguito, e quindi l’esecuzione continua dopo la dichiarazione di prova. docs.python.org/3/tutorial/errors.html#handling-exceptions
    Forse dovrei essere cercando di fare qualcosa di diverso la dichiarazione di prova, perché io sono solo volendo i due os.comandi di sistema e una picturenumber aumentare se il file esiste. Se il file non esiste, ho voglia il salto di questo e di continuare con il mio più grande script loop. Si potrebbe, forse, mi punto nella giusta direzione per qualcosa per questo? Grazie.

    OriginaleL’autore Adem Öztaş

  3. 1

    La sintassi per try/except in Python è

    try:
        # code that might raise the exception
        pass
    except <exceptions go here>:
        # code that should happen when the
        # specified exception is/exceptions are
        # raised
        pass
    except <other exceptions go here>:
        # different code that should happen when
        # the specified exception is/exceptions
        # are raised
        pass
    else:
        # code that follows the code that 
        # might raise the exception, but should
        # only execute when the exception isn't
        # raised
        pass
    finally:
        # code that will happen whether or not
        # an exception was raised
        pass

    Un paio di linee guida generali:

    • A meno che non si vuole veramente il tuo codice in modo invisibile all’utente di gestire tutte le eccezioni, la cattura di eccezioni specifiche. Questo vi permetterà di gestire meglio qualcosa che va storto.
    • Quando si utilizzano più except blocchi, posizionare i blocchi più specifiche eccezioni di livello superiore (cioè, assicurarsi sottoclasse eccezioni compaiono prima della loro base). Il primo blocco con un corrispondente eccezione di vincere.
    • Luogo come un po ‘ di codice possibile, sotto il try. Qualsiasi codice che può sollevare un’eccezione, sono in attesa che appartiene al try; il codice che deve essere eseguito solo quando non viene generata alcuna eccezione dovrebbe andare dentro il else. In questo modo, se si solleva un’eccezione non ci si aspettava non ottenere schiacciato.

    Inoltre, si potrebbe desiderare di dare un’occhiata al il sottoprocesso modulo invece di utilizzare os.system().

    OriginaleL’autore dirn

Lascia un commento

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