Errore Python

di il
15 risposte

Errore Python

Buongiorno a tutti,
sono un neofita su Python, e chiedevo a qualcuno se mi aiuta a capire come mai ottengo un errore nell'esecuzione di uno script python, in particolare sull istruzione ;

while True:
#--- initialisation des variables ---#
cnx = ' '
por = ' '
ctl = ' '
tim = 0
#--- initialisation modem ---#
print ' \ 033[33 mInitialisation '
execfile("modem_init.py")
time.sleep(0.5)
Ottengo quest errore
while True:
^
SyntaxError: invalid syntax

15 Risposte

  • Re: Errore Python

    Se non racchiudi il codice tra i tag 'CODE' non si capisce niente (leggi il regolamento!)
  • Re: Errore Python

    Andrea Quaglia ha scritto:


    Se non racchiudi il codice tra i tag 'CODE' non si capisce niente (leggi il regolamento!)
    Soprattutto se si tratta di Python, dove l'indentazione è appena appena significativa...
  • Re: Errore Python

    Andrea Quaglia ha scritto:


    Se non racchiudi il codice tra i tag 'CODE' non si capisce niente (leggi il regolamento!)
    Grazie
    while True:
    #--- initialisation des variables ---#
    cnx = ' '
    por = ' '
    ctl = ' '
    tim = 0
    #--- initialisation modem ---#
    print ' \ 033[33 mInitialisation '
    execfile("modem_init.py")
    time.sleep(0.5)
    Ottengo errore su questa istruzione, forse e meglio che alleghi in file completo per capire, uso python su Linux sono veramente alle prime armi.

    while True:
    ^
    SyntaxError: invalid syntax
  • Re: Errore Python

    franz68 ha scritto:


    while True:
    ^
    SyntaxError: invalid syntax
    Il codice che sta sotto al ciclo while deve essere indentato: prima di iniziare a usare un linguaggio, documentati almeno sui fondamentali!

    Ciao!
  • Re: Errore Python

    Alka ha scritto:


    franz68 ha scritto:


    while True:
    ^
    SyntaxError: invalid syntax
    Il codice che sta sotto al ciclo while deve essere indentato: prima di iniziare a usare un linguaggio, documentati almeno sui fondamentali!

    Ciao!
    Grazie,avevo corretto li script python con diversi errori di indentazione,probabilmente chi ha creato lo script lo ha fatto secondo me,con un editore diverso,cmq io sono veramente a digiuno su python,sorse avrei dovuto allegati tutto il file.
    Francesco
  • Re: Errore Python

    Mi sa che sei alle prime armi se non primissime.
    Come fai ad avere un syntax error su una riga corretta? Che compilatore stai usando?
    Comincia con un compilatore online assieme a un buon libro o dispensa

    https://onlinegdb.com/f1n1ImEy
  • Re: Errore Python

    franz68 ha scritto:


    Grazie,avevo corretto li script python con diversi errori di indentazione,probabilmente chi ha creato lo script lo ha fatto secondo me,con un editore diverso
    In genere, si adottano espedienti per conservare l'indentazione a prescindere dall'editor utilizzato.

    franz68 ha scritto:


    cmq io sono veramente a digiuno su python
    Il forum non è il posto giusto per formarsi da zero: per quello ci sono i libri, i corsi, la documentazione e tutto il resto.

    franz68 ha scritto:


    avrei dovuto allegati tutto il file
    Non vedo per quale motivo.
  • Re: Errore Python

    Weierstrass ha scritto:


    Mi sa che sei alle prime armi se non primissime.
    Come fai ad avere un syntax error su una riga corretta? Che compilatore stai usando?
    Comincia con un compilatore online assieme a un buon libro o dispensa

    https://onlinegdb.com/f1n1ImEy
    Ciao,
    Si Sono alle primissime armi,non conosco bene Python 3 per compilatore uso IDLE su Server Linux, e cercavo di capire la sua sintassi e il funzionamento, in quanto mi e' capitato di provare un programma in Python, diversi file di questo programma non contengono errori, ho provato anche online per vedere la sintassi se era giusta e non mi aveva dato errori.
    #!/usr/bin/env python3
    # coding: utf-8
    
    import os
    import sys
    import time
    import serial
    import pynitel
    import modules
    
    #--- commandes hayes ---#
    at_ttone = ' ATA0 \ r \ n '
    
    #--------------------------------------------------------------------#
    #----------------------------- Script -------------------------------#
    #--------------------------------------------------------------------#
    
    
    def init():
        if len(sys.argv) > 2:
            (code) = (sys.argv[1])
        else:
            (code) = (' ')
        return(code)
    
    
    def page_code():
        while True:
            pynitel.home()
            pynitel.xdraw(' pages / page_code.vdt ')
            pynitel.bip()
            (choix, touche) = pynitel.input_key(0, 1, 0, data=' ')
            pynitel.cursor(False)
            if touche == pynitel.sommaire:
    
                break
    
    
    def page_mitterrand():
        while True:
            pynitel.home()
            pynitel.xdraw(' pages / mitterrand.vdt ')
            pynitel.bip()
            (choix, touche) = pynitel.input_key(0, 1, 0, data=' ')
            pynitel.cursor(False)
            if touche == pynitel.sommaire:
    
                break
    
    
    def page_info():
    
        touche = pynitel.repetition
    
        while True:
            pynitel.cursor(False)
    
            if touche == pynitel.repetition:
                pynitel.home()
                pynitel.xdraw(' pages / page_info_0.vdt ')
            (choix, touche) = pynitel.input_key(0, 1, 0, data=' ')
            if touche == pynitel.suite:
                pynitel.home()
                pynitel.xdraw(' pages / page_info_1.vdt ')
    
            if touche == pynitel.sommaire:
                break
    
    
    def page_metar():
    
        touche = pynitel.repetition
    
        while True:
    
            if touche == pynitel.repetition:
                pynitel.home()
                pynitel.xdraw(' pages / page_metar.vdt ')
    
            (oaci_code, touche) = pynitel.input(14, 19, 4, data=' ')
    
            if touche == pynitel.envoi:
                (metar) = modules.metar(oaci_code)
                pynitel._del(17, 10)
                pynitel._del(18, 0)
                pynitel.pos(17, 10)
    
                pynitel._print(metar)
    
            if touche == pynitel.sommaire:
                break
    
    
    def page_jeux():
    
        touche = pynitel.repetition
    
        while True:
    
            if touche == pynitel.repetition:
                pynitel.home()
                pynitel.xdraw(' pages / page_jeux.vdt ')
    
            (jeux_code, touche) = pynitel.input(14, 19, 4, data=' ')
    
            if touche == pynitel.envoi:
    
                if jeux_code == "DES":
                    pynitel.xdraw(' pages / page_jeux_des.vdt ')
                    (jeux_nb, touche) = pynitel.input(14, 19, 4, data=' ')
                    (result_des) = modules.jeux_des(nb)
    
                if jeux_code == "MOTS":
                    pynitel.xdraw(' pages / page_jeux_mots.vdt ')
                    (jeux_nb, touche) = pynitel.input(14, 19, 4, data=' ')
                    (result_mot) = modules.jeux_mots(nb)
    
            if touche == pynitel.sommaire:
                break
    
    
    def page_menu(code):
    
        touche = pynitel.repetition
    
        while True:
            # affichage initial ou rC)pC)tition
            if touche == pynitel.repetition:
                pynitel.home()
                pynitel.xdraw(' pages / page_acceuil.vdt ')
    
            (code, touche) = pynitel.input(15, 8, 31, data=' ')
            print (code)
            if touche != pynitel.repetition:
                break
        return (touche, code)
    
    
    def recherche(code):
        "Effectue une recherche"
    
        if ' MITTERRAND ' in code:
            print ('Affichage page mitterrand')
            page_mitterrand()
    
        elif ' CODE ' in code:
            print (' Affichage page code ')
            page_code()
    
        elif ' INFO ' in code:
            print (' Affichage page info ')
            page_info()
    
        elif ' METAR ' in code:
            print (' Affichage page metar ')
            page_metar()
    
        elif ' JEUX ' in code:
            print (' Affichage page jeux ')
            page_jeux()
    
        else:
            pynitel.message(0, 1, 3, "Aucun service trouvC)")
    
    
    def serveur():
        (code) = init()
        while True:
            (touche, code) = page_menu(code)
    
            if touche == pynitel.envoi:
                pynitel.cursor(False)
                pynitel.pos(0, 1)
                pynitel.flash()
                pynitel._print(' Recherche ... ')
                recherche(code,)
                code = ' '
    
            if touche == pynitel.guide:
                page_code()
                code = ' '
    
            if touche == pynitel.connexionfin:
                pynitel.home()
                pynitel.cursor(False)
                pynitel.pos(0, 1)
                pynitel._print(' D C )connexion ')
                pynitel.end()
                break
    
    #--------------------------------------------------------------------#
    #----------------------------- Script -------------------------------#
    #--------------------------------------------------------------------#
    
    
    os.system(' clear ')
    
    print (' \ 033[34 m *************************************************************** ')
    print (' ********************* \033[31 m Serveur Minitel \ 033[34 m ************************* ')
    print (' ********************* \033[33 m 09 72 631 751 \ 033[34 m ************************* ')
    print (' *************************************************************** '
    
      while True:
        #--- initialisation des variables ---#
        cnx = ' '
        por = ' '
        ctl = ' '
        tim = 0
        #--- initialisation modem ---#
        print ' \ 033[33 mInitialisation '
        execfile("modem_init.py")
        time.sleep(0.5))
        
        # --- liaison serie --- #
        pynitel.conn = serial.Serial(
            ' / dev / ttyS5 ', 1200, parity=serial.PARITY_EVEN, bytesize=7, timeout=2)
    
        #--- attente appel ---#
        print ' \ 033[32 mAttente appel '
        while not ' RING ' in cnx:
            cnx = pynitel.conn.read(pynitel.conn.inWaiting())
            time.sleep(1)
    
        #--- envoi porteuse serveur ---#
        print ' \ 033[33 mEnvoi porteuse '
        pynitel.conn.write(at_ttone)
    
        #--- detection porteuse minitel ---#
        print ' \ 033[33 mConnexion en cours '
        while not ' CONN ' in por:
            por = pynitel.conn.read(pynitel.conn.inWaiting())
            time.sleep(1)
    
            #--- timer avant arret ---#
            if tim > 30:
                print ' \ 033[31 mNon connect C )'
                ctl = False
                break
    
            else:
                tim = tim + 1
    
        #--- verification connexion ---#
        if ctl != False:
    
            #--- affichage pages ---#
            print ' \ 033[32 mConnect C ), Affichage page acceuil '
            serveur()
            print ' \ 033[33 mD C )connexion '
            time.sleep(6)
        else:
            print ' \ 033[33 mR C )initialisation '
            
    #--- fin ---#
    
    
  • Re: Errore Python

    Ci sono diversi problemi. Il primo è che stai usando uno script fatto per Python 2.7 con Python 3.x, e ciò richiede una conversione delle vecchie funzioni alle nuove (prima lezione: le versioni 2.x di Python non sono compatibili con le 3.x).
    • L'errore sul While non è nel while, ma viene dalla riga precedente che non ha la parentesi finale. Inoltre il While va portato in colonna 0.
    • Alla riga 212 c'è una parentesi di troppo.
    Puoi usare lo script per convertire in automatico dalla versione 2.7 alla 3.x. Ho provato sul file che hai allegato e funziona, devi solo convertire i file mancanti e cercare i moduli non-standard (quelli che si includono con pip), ma qui siamo già a un livello 'intermedio' di conoscenza di Python.
  • Re: Errore Python

    Andrea Quaglia ha scritto:


    Ci sono diversi problemi. Il primo è che stai usando uno script fatto per Python 2.7 con Python 3.x, e ciò richiede una conversione delle vecchie funzioni alle nuove (prima lezione: le versioni 2.x di Python non sono compatibili con le 3.x).
    • L'errore sul While non è nel while, ma viene dalla riga precedente che non ha la parentesi finale. Inoltre il While va portato in colonna 0.
    • Alla riga 212 c'è una parentesi di troppo.
    Puoi usare lo script per convertire in automatico dalla versione 2.7 alla 3.x. Ho provato sul file che hai allegato e funziona, devi solo convertire i file mancanti e cercare i moduli non-standard (quelli che si includono con pip), ma qui siamo già a un livello 'intermedio' di conoscenza di Python.
    Intanto ti ringrazio Andrea della tua cortesia, ho provato a convertire lo script con 2to3 opzione -w e
    Ottengo errore;
    Traceback (most recent call last):
    File "serveur.py", line 8, in <module>
    import pynitel
    File "/root/Downloads/Minitel-Serveur/serveur/pynitel.py", line 41, in <module>
    reload(sys)
    NameError: name 'reload' is not defined

    ho provato ad installare con pip il modulo
    from importlib import reload.
    ho provato ad installare importlib..ma esiste gia
  • Re: Errore Python

    Non sono in grado di aiutarti, perché non so cosa stai facendo, né che struttura ha il tuo progetto.
    Ho trovato su GitHub un server MiniTel 'pynitel.py' ma alla riga 41 c'è altra roba.
    PS: stai lavorando in Linux come root? Questo è male, come incrociare i flussi...
  • Re: Errore Python

    franz68 ha scritto:


    Ottengo errore
    [...]
    ho provato ad installare con pip il modulo
    from importlib import reload.
    ho provato ad installare importlib..ma esiste gia
    Per risolvere la tua problematica non servono suggerimenti, ma l'affiancamento di uno sviluppatore esperto che ti fornisca adeguata consulenza nella migrazione del tuo script Python e nella risoluzione di ogni singolo errore e/o ostacolo che si presenta.

    Il forum dubito sia uno strumento adatto a questa esigenza, poiché non è possibile valutare tutte le variabili in gioco, capire qual è la situazione nel dettaglio, e il thread diventa una sequenza infinita di "martellate" senza un capo né una coda, utili solo all'autore della discussione e solo a quel caso specifico (se affrontate in questo modo).

    Se l'obiettivo fosse quello di chiarire dubbi specifici nel percorso di apprendimento del linguaggio usando la problematica attuale come esercizio, sarebbe tutto completamente diverso, ma qui è un mero riportare un errore e attendere la soluzione da tentare per passare a un nuovo errore, e il giro ricomincia. Alla fine, il thread diventa completamente sterile.
  • Re: Errore Python

    Andrea Quaglia ha scritto:


    Non sono in grado di aiutarti, perché non so cosa stai facendo, né che struttura ha il tuo progetto.
    Ho trovato su GitHub un server MiniTel 'pynitel.py' ma alla riga 41 c'è altra roba.
    PS: stai lavorando in Linux come root? Questo è male, come incrociare i flussi...
    Si scusa uso linux si come root in locale, e possibile selezionare l'ambiente sia di python 2 che di python 3, comunque ho riconverito tutto installando da pip 3to2 e ambiente python 2.7
    il progetto e' questo



    ci sono diversi script, io ho scelto questo perche uso due vecchi modem, altri invece vanno su TCP o websoket, oppure tutti e due, interessante e anche questa pagina ;

    https://zigazou.github.io/miedit

    comunque doverebbero funzionare anche su piattaforma win, ovviamente andando a modificare la porta di connessione
    COM1 COM1 oppure anche su USB.
  • Re: Errore Python

    Alka ha scritto:


    franz68 ha scritto:


    Ottengo errore
    [...]
    ho provato ad installare con pip il modulo
    from importlib import reload.
    ho provato ad installare importlib..ma esiste gia
    Per risolvere la tua problematica non servono suggerimenti, ma l'affiancamento di uno sviluppatore esperto che ti fornisca adeguata consulenza nella migrazione del tuo script Python e nella risoluzione di ogni singolo errore e/o ostacolo che si presenta.

    Il forum dubito sia uno strumento adatto a questa esigenza, poiché non è possibile valutare tutte le variabili in gioco, capire qual è la situazione nel dettaglio, e il thread diventa una sequenza infinita di "martellate" senza un capo né una coda, utili solo all'autore della discussione e solo a quel caso specifico (se affrontate in questo modo).

    Se l'obiettivo fosse quello di chiarire dubbi specifici nel percorso di apprendimento del linguaggio usando la problematica attuale come esercizio, sarebbe tutto completamente diverso, ma qui è un mero riportare un errore e attendere la soluzione da tentare per passare a un nuovo errore, e il giro ricomincia. Alla fine, il thread diventa completamente sterile.
    Certamente hai ragione, le mie domande in merito, erano solo per chiarire determinati errori su questo linquaggio, che ovviamente parto da sotto zero, sono abituato con linux agli errori.
    grazie
    Francesco
Devi accedere o registrarti per scrivere nel forum
15 risposte