Python-pysftp-get\u r from-Linux在Linux上运行良好,但在Windows上运行不好
我想使用Python2.7,使用SFTP从Linux服务器向本地机器(包括Windows和Linux)递归地复制一个包含文件和子文件夹的完整目录结构 我能够ping服务器并使用WinSCP从同一台机器下载文件 我尝试了以下代码,在Linux上可以正常工作,但在Windows上不行 我尝试了Python-pysftp-get\u r from-Linux在Linux上运行良好,但在Windows上运行不好,python,linux,windows,sftp,pysftp,Python,Linux,Windows,Sftp,Pysftp,我想使用Python2.7,使用SFTP从Linux服务器向本地机器(包括Windows和Linux)递归地复制一个包含文件和子文件夹的完整目录结构 我能够ping服务器并使用WinSCP从同一台机器下载文件 我尝试了以下代码,在Linux上可以正常工作,但在Windows上不行 我尝试了\,/,os.join,都给了我相同的错误,还检查了权限 import os import pysftp cnopts = pysftp.CnOpts() cnopts.hostkeys = None
\
,/
,os.join
,都给了我相同的错误,还检查了权限
import os
import pysftp
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None # disable host key checking.
sftp=pysftp.Connection('xxxx.xxx.com', username='xxx', password='xxx', cnopts=cnopts)
sftp.get_r('/abc/def/ghi/klm/mno', 'C:\pqr', preserve_mtime=False)
File“”,第1行,在文件“C:\Python27\lib\site packages\pysftp\u init\u.py”中,第311行,在get\r preserve\u mtime=preserve\u mtime中)
文件“C:\Python27\lib\site packages\pysftp\u init\uu.py”,第249行,在get self.\u sftp.get(远程路径,本地路径,回调=回调)中
文件“C:\Python27\lib\site packages\paramiko\sftp_client.py”,第769行,在get中以fl:IOError:[Errno 2]没有这样的文件或目录:u'C:\\pqr\\./abc/def/ghi/klm/mno/.NFS000000061569F500004'
事实上,pysftpget\r
在Windows上不起作用。它对远程SFTP路径使用os.sep
和os.path
函数,这是错误的,因为SFTP路径总是使用正斜杠
但您可以轻松实施便携式替换:
import os
from stat import S_ISDIR, S_ISREG
像这样使用它:
get_r_portable(sftp, '/abc/def/ghi/klm/mno', 'C:\\pqr', preserve_mtime=False)
可能对守则作出的修改:
有关
put\r
的类似问题,请参阅:旁注:请勿“禁用主机密钥检查”。你正在失去一种保护 有关正确的解决方案,请参阅
get_r_portable(sftp, '/abc/def/ghi/klm/mno', 'C:\\pqr', preserve_mtime=False)