我是Python脚本新手。我需要将一些文件夹从本地计算机(windows)复制到Linux服务器。目前,我正在通过打开WinSCP控制台复制文件夹。我需要自动化这个过程。我使用Paramiko模块库用Python编写了下面的代码。
import paramiko
import os
transport = paramiko.Transport(('10.10.10.10', 22))
transport.connect(username='weblogic', password='weblogic')
sftp = paramiko.SFTPClient.from_transport(transport)
filepath = '/apps/logs'
localpath = 'C:\\Users\\Public\\test'
sftp.put(localpath,filepath)
上面的操作不正常,下面有错误。请帮助我将windows路径C:\Users\Public\test
中的文件夹复制到Linux服务器路径/apps/logs
?
Traceback (most recent call last):
File "C:\Users\Desktop\python\execute_script.py", line 28, in <module>
sftp.put(localpath,filepath)
File "C:\Python27\lib\paramiko\sftp_client.py", line 548, in put
fl = file(localpath, 'rb')
IOError: [Errno 13] Permission denied: 'C:\\Users\\Public\\test'
除了回答@user1041177之外,这里还有一种方法,当您在windows到linux主机上时(不确定到底是哪种主机)。
我不知道为什么,但是如果我在远程路径上保留反斜杠,就会得到一个FileNotFoundException。唯一的方法是用“/”替换所有“\”
也许有人能告诉我避免这种情况的正确方法?
如果遇到相同的问题,请使用上面完全相同的代码的一部分来提供面包屑:
顺便说一句,我没有在对象内部使用这些函数,这就是为什么它们是“socket”而不是“self”,因为我通过将SFTP套接字传递给它们来调用这些函数。
最后不得不对@user1041177说声谢谢,工作起来很有魅力。
请从链接https://gist.github.com/johnfink8/2190472检查下面的代码。我在代码片段中使用了
put_all
方法。我试图从一个windows框复制到一个linux框,得到了与上面@Apex相同的错误。我使用的是put_all方法,我不得不对代码的某些部分进行一些“替换”。
相关问题 更多 >
编程相关推荐