python - 如果 SFTP 服务器触发在上传时自动移动文件,Paramiko put 方法会抛出 "[Errno 2] File not found"

标签 python triggers sftp paramiko put

我正在调用 Paramiko sftp_client.put(locapath,remotepath) 方法

这会引发下面的 [Errno 2] 文件未找到错误。

01/07/2020 01:12:03 PM - ERROR - [Errno 2] File not found
Traceback (most recent call last):
  File "file_transfer\TransferFiles.py", line 123, in main
  File "paramiko\sftp_client.py", line 727, in put
  File "paramiko\sftp_client.py", line 689, in putfo
  File "paramiko\sftp_client.py", line 460, in stat
  File "paramiko\sftp_client.py", line 780, in _request
  File "paramiko\sftp_client.py", line 832, in _read_response
  File "paramiko\sftp_client.py", line 861, in _convert_status

在尝试了许多其他推荐的修复程序后,我发现该错误是由于服务器具有自动触发器,在文件上传后立即将文件移动到另一个位置。

我还没有看到与此问题相关的其他帖子,并且想知道是否有其他人修复了此问题,因为 SFTP 服务器由第三方拥有,并且不想更改触发器属性。

文件实际上上传正确,因此我可以捕获异常并忽略错误。但如果可能的话,我更愿意处理它。

最佳答案

Paramiko 默认在上传后验证上传文件的大小。

如果文件上传后立即移走,则检查失败。

要避免检查,请设置SFTPClient.putconfirm参数为False

sftp_client.put(localpath, remotepath, confirm=False)

我认为检查无论如何都是多余的,请参阅
How to perform checksums during a SFTP file transfer for data integrity?

<小时/>

有关 pysftp 的类似问题(什么是 Paramiko 的包装器),请参阅:
Python pysftp.put raises "No such file" exception although file is uploaded

关于python - 如果 SFTP 服务器触发在上传时自动移动文件,Paramiko put 方法会抛出 "[Errno 2] File not found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59621421/

相关文章:

jquery - 如何在使用 delegate() 处理其事件的元素上触发() 事件

python - 尝试访问许可证 API 时为 "Not authorized to access the application ID"

python - 为什么我的程序在 urllib3 记录开始新的 HTTPS 连接后挂起?

python - 如何使命令行参数对 Flask 路由可见?

macos - 如何 SFTP 到 Amazon EC2 Ubuntu t1.micro 实例?

node.js - 如何判断SFTP文件是否是Node.js中的目录?

java - 如何使用java按上次更新时间对SFTP文件进行排序?

python - Scrapy Playwright 单击并循环遍历虚拟 Javascript 页面

javascript - 是否可以在 indexedDB 上创建触发器?

更新后mysql触发