我正在调用 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.put
的confirm
参数为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/