Python pysftp上传文件报IOError: No such file问题求助
问题分析与解决思路
首先明确:你遇到的IOError: [Errno 2] No such file不是指本地文件不存在,从报错栈的self.stat(remotepath)可以看出,这是pysftp在尝试检查远程SFTP服务器上的目标路径/文件时触发的错误。
解决步骤:
核对远程路径的有效性
sftp.put的第二个参数"file1.txt"是上传到SFTP服务器的当前工作目录,先确认该目录是否存在、你的账号是否有权限访问:with pysftp.connection(host="hostname",username="uname",password="pwd") as sftp: print(sftp.pwd()) # 打印当前远程工作目录 print(sftp.listdir()) # 列出当前目录下的文件/文件夹如果要上传到指定远程目录,必须写完整路径,比如服务器的
/data/uploads目录:sftp.put("d://folder1//file1.txt", "/data/uploads/file1.txt")若目标远程目录不存在,先创建(需确保账号有创建权限):
sftp.mkdir("/data/uploads")修正本地文件路径的拼写错误
你的测试代码用的是"d://folder//file1.txt",但上传代码里是"d://folder1//file1.txt",这很可能是笔误。建议用原始字符串避免转义问题,比如:sftp.put(r"d:\folder1\file1.txt", "file1.txt")调整上传参数跳过确认检查
如果远程文件本身不存在(你是第一次上传),pysftp默认的confirm=True会尝试检查远程文件状态,可能触发报错。可以关闭确认:sftp.put("d://folder1//file1.txt", "file1.txt", confirm=False)检查SFTP账号权限
确认你的SFTP账号对目标远程目录有写入权限,即使目录存在,无权限也会触发类似的不存在错误。
内容的提问来源于stack exchange,提问作者KS_23
相关产品推荐
相关产品推荐

