比较从ftp服务器带来的数字

时间:2014-01-31 09:25:33

标签: python file ftp

我有一些像这样的代码:

def checkupdate():
    build_version = 1.8

    server = 'server ip'
    ftp2 = ftplib.FTP(server)
    ftp2.login()
    writeversion = open("latest_version.txt", "w")
    ftp2.retrlines('RETR latest_version.txt', writeversion.write())

    writeversion.write(latestversion)
    writeversion.close()
    latestversion2 = open("latest_version.txt", "r")
    latestversion3 = latestversion2.readline()

    if latestversion3 > build_version:
        tkMessageBox.showwarning("Updater", "There is a new version. Please check our site.")
elif latestversion3 == build_version:
    tkMessageBox.showinfo("Updater", "Current version:%d, is the latest." % build_version)
else:
        tkMessageBox.showinfo("Updater", "Current version:%d is the latest." % build_version)

    latestversion2.close()
    os.unlink("latest_version.txt")

但是,每次运行此命令时,都无法将从ftp服务器获取的版本写入latest_version.txt,并且该文件为空。它还告诉我总是一个新版本。什么方法让这件作品上班?

1 个答案:

答案 0 :(得分:1)

您在这里比较不同的类型。 build_version被视为floatlatestversion3被视为string。因此,您所观察到的是完美的预期:

>>> "1.6" > 1.7
True
>>> "0.42" > 1.7
True

一种解决方法是声明为字符串

build_version = "1.8"

但是,如果您尝试比较1.7.11.7.10等版本号,则可能会遇到问题。您应该使用disutils.version来比较版本号。