使用Python ftplib的远程FTP服务器中文件的MD5值
使用ftplib将文件传输到服务器后,如何确定该文件的MD5与本地服务器中的MD5使用Python ftplib的远程FTP服务器中文件的MD5值,python,ftp,md5,file-transfer,ftplib,Python,Ftp,Md5,File Transfer,Ftplib,使用ftplib将文件传输到服务器后,如何确定该文件的MD5与本地服务器中的MD5 from ftplib import FTP import hashlib ftp = FTP('server') ftp.login('username','password') ftp.cwd('path_to_upload') file_to_upload = open(file,'rb') filename = os.path.basename(file) ftp.storbinary('STOR
from ftplib import FTP
import hashlib
ftp = FTP('server')
ftp.login('username','password')
ftp.cwd('path_to_upload')
file_to_upload = open(file,'rb')
filename = os.path.basename(file)
ftp.storbinary('STOR ' + filename, file_to_upload)
local_file_hash = hashlib.md5(open(file, 'rb').read()).hexdigest()
# not sure how to achieve this
server_file_hash = hashlib.md5(open(filename, 'rb').read()).hexdigest()
if local_file_hash == server_file_hash:
print("Successful transfer")
else:
print("Failure transfer")
首先,确保远程服务器完全支持校验和计算。很多人没有。我相信甚至没有标准的FTP命令来计算远程文件的校验和。有许多提案,也有许多专有解决方案 最新的提案是:
可用于计算校验和的一些命令有:
XSHA1
,XSHA256
,XSHA512
,XMD5
,MD5
,XCRC
和HASH
你可以用它来测试。WinSCP支持前面提到的所有命令。测试它的或。如果它们有效,请检查WinSCP对您的服务器使用的命令和语法。(我是WinSCP的作者)
一旦发现服务器支持什么命令(如果有),您可以使用:
ftp.voidcmd("XSHA1 " + filename)