首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用Datetime/Time模块时会出现奇怪的TypeError吗?

在使用Datetime/Time模块时会出现奇怪的TypeError吗?
EN

Stack Overflow用户
提问于 2016-07-29 01:56:13
回答 1查看 65关注 0票数 0

所以我是编程新手,我编写了这个小脚本,从凌晨两点开始上网。到早上8点(长篇大论);

代码语言:javascript
复制
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()

但每当我运行它时,我都会得到这样的结果:

第35行,在tdelta = dt.datetime.strptime(a,FMT) - dt.datetime.strptime(b,FMT) TypeError:必须是字符串,而不是整型

我真的不明白为什么,因为在函数tdelta中,两个参数都是字符串,而且……我不知道。我错过了什么吗?我需要指定什么吗?或者这只是我一定是漏掉了一个打字错误?

此外,我认为只要看一眼我的代码,就会发现我是一个绝对的新手,所以如果你也有任何建议来改进我的代码,我将永远感激。

我真的很感谢你的帮助。:)

编辑:这是完整的堆栈跟踪(根据请求):

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2016-07-29 02:05:31

行46和54 (x = tdelta(nowto8))使用整数参数调用tdelta,而不是字符串。将第46-47行从

代码语言:javascript
复制
x = tdelta(nowto8)
sleep(x)

代码语言:javascript
复制
sleep(nowto8)

54-55行来自

代码语言:javascript
复制
x = tdelta(nowto8)
sleep(str(x))

代码语言:javascript
复制
sleep(nowto8)

也是。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38643554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档