0

python ftplibを使用して、ビルドftpサーバーからビルドをダウンロードしています。ファイルは約1.5〜1.6GBです。バッチファイルを使用してプログラムを実行します。このようにすると、ダウンロードのスケジュールが簡単になります。問題は、ダウンロードしたファイルが機能していないように見えることです。それらは互換性エラー(ウィンドウ)をスローします。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​​ pause

4

1 に答える 1

3

f= open(trg_file, "w")->f= open(trg_file, "wb")

フラグがないと、bPython は ASCII を書いていると見なし、行末を変更しています (したがって、サイズの違いとバイナリの破損)。

于 2012-08-20T03:54:23.943 に答える