Python の ftplib を使用して、リモート FTP サイトから zip ファイルを FTP 送信しています。次に、それをディスクに書き込もうとします。ファイルの書き込みは機能しますが、WinZip または WinRar を使用して zip を開こうとするほとんどの試みは失敗します。どちらのアプリも、ファイルが破損していると主張しています。ただし、奇妙なことに、右クリックして WinRar を使用してファイルを抽出しようとすると、ファイルが抽出されます。
明確にするために、ファイルの書き込みは機能しますが、一般的な zip アプリ内で開くことはできませんが、同じアプリを使用して解凍します。Python zipfile モジュールは、zip の抽出に失敗することはありません。
FTP サイトから zip ファイルを取得するために使用しているコードを次に示します (不適切なタブは無視してください。それは問題ではありません)。
filedata = None
def appender(chunk):
global filedata
filedata += chunk
def getfile(filename):
try:
ftp = None
try:
ftp = FTP(address)
ftp.login('user', 'password')
except Exception, e:
print e
command = 'RETR ' + filename
idx = filename.rfind('/')
path = filename[0:idx]
ftp.cwd(path)
fileonly = filename[idx+1:len(filename)]
ftp.retrbinary('RETR ' + filename, appender)
global filedata
data = filedata
ftp.close()
filedata = ''
return data
except Exception, e:
print e
data = getfile('/archives/myfile.zip')
file = open(pathtoNTFileShare, 'wb')
file.write(data)
file.close()