我有一些像这样的代码:
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,并且该文件为空。它还告诉我总是一个新版本。什么方法让这件作品上班?
答案 0 :(得分:1)
您在这里比较不同的类型。 build_version
被视为float
,latestversion3
被视为string
。因此,您所观察到的是完美的预期:
>>> "1.6" > 1.7
True
>>> "0.42" > 1.7
True
一种解决方法是声明为字符串:
build_version = "1.8"
但是,如果您尝试比较1.7.1
和1.7.10
等版本号,则可能会遇到问题。您应该使用disutils.version
来比较版本号。