2014-01-31 5 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") 

그러나, 매번 내가이 실행이 latest_version.txt FTP 서버에서 가져온 버전을 쓰기 기운을하고, 파일이 비어 있습니다 . 또한 항상 새로운 버전이 있다는 것을 나에게 말한다. 이 작품을 얻는 방법은 없나요?

+0

들여 쓰기를 수정할 수 있습니까? – usethedeathstar

+0

@usethedeathstar fixed – user3167683

+0

일부 부분이 아직 수정되지 않았습니까? (if/elif/else 부분) – usethedeathstar

답변

1

다른 유형을 여기에서 비교하고 있습니다. build_versionfloat으로, latestversion3string으로 간주됩니다. 따라서, 당신이 관찰하는지에 머물면서 예상된다

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

한 수정이 문자열로 선언하는 것입니다 : 그러나

build_version = "1.8" 

, 당신은 비교하려고하면이 문제가 실행될 수 있습니다 1.7.11.7.10과 같은 버전 번호 버전 번호를 비교하려면 disutils.version을 사용해야합니다.