Python ftplib不能完全下载

时间:2012-08-20 03:19:18

标签: python ftplib

我正在使用python ftplib从构建ftp服务器下载构建。这些文件大约是1.5-1.6 GB。 我使用批处理文件来运行程序。这样就可以更轻松地安排下载。 问题是,下载的文件似乎不起作用。他们抛出兼容性错误(windows)。如果我使用FileZilla下载文件,文件工作正常。 此外,源文件和下载文件之间存在几百B的差异。发生了什么事?

import ftplib, sys, os

ftp = ftplib.FTP("<server_name")
try:
    ftp.login(user= "<user>", passwd = "<password>")
except:
    sys.stderr.write('Could not login.')

data=[]
ftp.dir(data.append)
builds=[]

trg=0           
trg_bld=""
for i in data:
    if len(i.split(" "))>12:
        if len(i.split(" ")[12].split("_"))>2:
    #this line is to find the version on the server
            if (i.split(" ")[12].split("_")[1]== "3.1.0"):
                if int(i.split(" ")[12].split("_")[2])>trg:
                    trg_bld = i.split(" ")[12]

trg_file = trg_bld
print trg_file
if os.path.isfile(trg_file):
    sys.stderr.write('File already exists.')
    sys.exit(1)
f= open(trg_file, "w")
ftp.retrbinary('RETR '+trg_bld, f.write)
f.close()
ftp.close()
sys.stdout.write("File download successful.")

批处理文件:     E:     cd E:\ Builds     python ftp_sch.py     暂停

1 个答案:

答案 0 :(得分:3)

f= open(trg_file, "w") - &gt; f= open(trg_file, "wb")

没有b标志,Python认为你正在编写ASCII并且它正在改变行结尾(因此大小差异和破坏的二进制文件)。