python - 使用pysftp传输文件如何验证上传成功?

标签 python sftp pysftp

我正在使用 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/

相关文章:

python - 如何按多个级别的列过滤多索引数据框?

Python3 传递列表以使用 functools.lru_cache 函数

python - TypeError : expected str, 字节或 os.PathLike 对象,而不是 _io.BytesIO

python - 根据另一列记录一列的值 : Python & Pandas

php - 在 PHP 中从 SFTP 获取最新文件(使用 CURL)

python - 将 Paramiko 连接 SFTPFile 作为输入传递给 dask.dataframe.read_parquet

python - 如何通过 Python 使用 sftp 和 mput?

Python - pysftp/paramiko - 使用指纹验证主机 key

python - 使用 pysftp 验证主机 key

python - 查找两个二维数组之间的匹配值对(交集)?