我正在使用 pysftp 通过网络传输文件。我想确保这个过程的可靠性。 pysftp 中有一个 put API,它返回一个包含传输文件大小的 SFTPAttributes 对象。这足以验证传输是否成功,我的意思是通过比较大小。
或者...在我看来,我也可以打开传输的文件并使用 check
方法...这是正确的方法吗?我只是有点困惑。谢谢。
最佳答案
Pysftp Connection.put
已经检查了上传文件的大小。这就是 confirm=True
参数的用途,您不需要执行任何其他操作:
whether to do a stat() on the file afterwards to confirm the file size
虽然理论上您可以使用 SFTPFile.check
验证校验和,但它通常不起作用,因为大多数 SFTP 服务器(包括广泛使用的 OpenSSH)不支持计算校验和。所以调用会失败。您将不得不运行一些 shell 命令来计算校验和。请参阅:
Comparing MD5 of downloaded files against files on an SFTP server in Python
但是否值得这样的努力值得怀疑,请参阅:
How to perform checksums during a SFTP file transfer for data integrity?
尽管现在,您不应该使用 pysftp,因为它已经死了。直接使用Paramiko代替。请参阅pysftp vs. Paramiko 。查看关于 Paramiko 的基本相同的问题:How to check if Paramiko successfully uploaded a file to an SFTP server?
关于python - 使用pysftp传输文件如何验证上传成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72812427/