如何使用Python从Windows将文件放在经过密码验证的SFTP服务器上?

如何使用Python从Windows将文件放在经过密码验证的SFTP服务器上?,python,windows,sftp,paramiko,pysftp,Python,Windows,Sftp,Paramiko,Pysftp,我花了好几个小时来处理这个问题,浏览网页,通常都找不到运气。以下是设置: 视窗10 Python3(使用REPL和VS代码) 仅通过密码进行SFTP服务器身份验证 要放入的1+GB大文件 最初,我编写了一个小Pysftp(Paramiko)代码: 导入pysftp 使用pysftp.Connection(主机=主机,用户名=用户名, 密码=密码,cnopts=sftp_选项)作为sftp: put(localpath,remotepath,confirm=True) 这在测试时适用于较小的

我花了好几个小时来处理这个问题,浏览网页,通常都找不到运气。以下是设置:

  • 视窗10
  • Python3(使用REPL和VS代码)
  • 仅通过密码进行SFTP服务器身份验证
  • 要放入的1+GB大文件
最初,我编写了一个小Pysftp(Paramiko)代码:

导入pysftp
使用pysftp.Connection(主机=主机,用户名=用户名,
密码=密码,cnopts=sftp_选项)作为sftp:
put(localpath,remotepath,confirm=True)
这在测试时适用于较小的文件。它还成功地运行了一个大文件,但当回过头来查看文件夹时,却找不到任何文件。我毫无根据的预感是,不知何故,这花了太长时间,帕拉米科无意中把这些碎片射到了一个空白处

我转向了
sftp
命令行实用程序,它可以方便地在windows10上运行。我能够手动测试上传的工作原理如下:

sftpusername@host
欢迎使用这个时髦的安全FTP服务器。请输入您的密码:
sftp>放置本地路径远程路径
sftp>退出
很明显,关键问题是密码输入,我竭尽全力尝试使用
Popen()
自动完成这项工作。我在StackOverflow上阅读并反复思考这些:和。这些演奏都没有产生任何效果

我能够读取输出,但输入似乎总是来自我的键盘。然后我尝试了
Pexpect
,但也不起作用,因为在Windows上,在某些程序上也不起作用:

PopenSpawn不能直接代替spawn。许多程序只有在检测到它们正在终端中运行时才提供交互行为。当由PopenSpawn运行时,它们的行为可能会有所不同


  • 更新11/19:我能够执行PuTTY的命令行
    psftp.exe
    ,它接受密码作为参数。我还确认了PySTFP/Paramiko和那个大文件在我自己设置的SFTP服务器上运行良好,所以这与供应商的服务器有关(我无能为力)。我将继续对此进行讨论,并希望在这里发布一个全面的答案

除了求助于,还有人对如何在Windows上使用Python 3.x将文件上载到SFTP服务器有什么想法吗?