2014-01-31 97 views
1

我有一些像這樣的代碼:比較數字

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

你能修好你的縮進嗎? – usethedeathstar

+0

@usethedeathstar固定 – user3167683

+0

有些部分仍然不固定? (if/elif/else部分) – usethedeathstar

回答

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來比較版本號。