python - 比较从 ftp 服务器获取的数字

标签 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,并且该文件为空。它还告诉我总是有新版本。有什么办法让这个作品发挥作用吗?

最佳答案

您正在此处比较不同类型。 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以便比较版本号。

关于python - 比较从 ftp 服务器获取的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21476400/

相关文章:

python - 如何使用 Flask test_client 设置请求参数?

file - 如何使用歌词解释数据压缩

c - 用 C 语言解析具有多个相似 block 的文件

ssh - 重新启动后AWS EC2 ftp sftp登录无法正常工作

php - 切换 Wordpress 站点主机时没有图像

python - 一个热编码序列,其值在测试中不存在

python - 在网络上托管一个重要的 python 程序?

c - 从文件中读取链表并加载数据

azure - 从 Windows Azure 上传到 FTP 时为 "The remote server returned an error: (501) Syntax error in parameters or arguments."

python - 通过附加具有不同列的 DataFrame 为 NaN 条目选择不同的值