Also bin ich neu in der Programmierung und ich hatte dieses winzige Skript programmiert, um mein Internet von zwei Uhr morgens auf acht Uhr morgens zu aktivieren (lange Geschichte);Weird TypeError bei Verwendung des Datetime/Time-Moduls?
import os
import datetime as dt
from time import sleep
def connect():
print("Connecting...")
os.system("netsh wlan connect Sushi")
def disconnect():
print("Disconnecting...")
os.system("netsh wlan disconnect")
def checkcon():
attempt= 0
while os.system("ping google.com") != 0:
print("Unable to connect. Trying again.")
connect()
sleep(attempt)
attempt = attempt + 1
if attempt != 0:
print("Attempt ", str(attempt), " ...")
print("Connected successfully")
def timeformat (hr, min, sec) : #For setting proper datetime parameters.
return (str(hr) + ":" + str(min) + ":" + str(sec))
FMT = '%H:%M:%S'
now = timeformat(dt.datetime.now().time().hour, dt.datetime.now().time().minute, dt.datetime.now().time().second)
twoam = '02:00:00'
eightam = '08:00:00'
def tdelta(a, b = now):
tdel = dt.datetime.strptime(a, FMT) - dt.datetime.strptime(b, FMT)
return tdel.seconds
twoto8 = tdelta(eightam, twoam)
nowto8 = tdelta(eightam)
def main():
if twoto8 >= nowto8:
connect()
checkcon()
print("Your internet has been successfully connected")
x = tdelta(nowto8)
sleep(x)
print("Time's up!")
disconnect()
exit()
else:
print("Not yet!")
disconnect()
x = tdelta(nowto8)
sleep(str(x))
main()
main()
Aber immer, wenn ich es laufen, bekomme ich diese:
Linie 35, in TDELTA tdel = dt.datetime.strptime (a, FMT) - dt.datetime.strptime (b, FMT) TypeError: muss str sein, nicht int
Ich verstehe nicht wirklich warum, denn in der Funktion tdelta sind beide Parameter Strings, und ... Ich weiß es nicht. Habe ich etwas verpasst? Muss ich etwas angeben? Oder ist es nur ein Tippfehler, den ich verpasst haben muss?
Ich denke auch, ein einziger Blick auf meinen Code macht es deutlich, dass ich ein absoluter Neuling bin, also, wenn Sie irgendwelche Vorschläge haben, meinen Code zu verbessern, werde ich ewig dankbar sein.
Ich schätze wirklich jede Hilfe. :)
EDIT: Hier ist der vollständige Stack-Trace (nach Anfrage):
Traceback (most recent call last):
File "C:\Users\Lenovo\Desktop\ShutdownTimer.py", line 58, in <module>
main()
File "C:\Users\Lenovo\Desktop\ShutdownTimer.py", line 54, in main
x = tdelta(nowto8)
File "C:\Users\Lenovo\Desktop\ShutdownTimer.py", line 35, in tdelta
tdel = dt.datetime.strptime(a, FMT) - dt.datetime.strptime(b, FMT)
TypeError: must be str, not int
Es bedeutet, dass sowohl 'a' als auch' b' Argumente in 'tdelta' Funktion Strings sein müssen. –
Sie haben nur einen Teil des Stack-Trace gepostet. Sieh dir den Rest an. Es wird dich direkt auf den bösen 'tdelta'-Aufruf hinweisen. – user2357112
@NickilMaveli Aber sind sie nicht schon? – Almond