Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过sftp上传paramiko文件夹_Python_Ssh_Sftp_Paramiko - Fatal编程技术网

Python 通过sftp上传paramiko文件夹

Python 通过sftp上传paramiko文件夹,python,ssh,sftp,paramiko,Python,Ssh,Sftp,Paramiko,在我的工作代码中,我有这个 import paramiko parent=os.path.split(dir_local)[1] for walker in os.walk(parent): try: self.sftp.mkdir(os.path.join(dir_remote,walker)) except: pass for file in walker[2]: sftp.put(os.path.join(walker[0],file

在我的工作代码中,我有这个

import paramiko
parent=os.path.split(dir_local)[1]
for walker in os.walk(parent):
    try:
        self.sftp.mkdir(os.path.join(dir_remote,walker))
    except:
        pass
for file in walker[2]:
    sftp.put(os.path.join(walker[0],file),os.path.join(dir_remote,walker[0],file))
现在显示的错误是

Trying ssh-agent key 5e08bb83615bcc303ca84abe561ef0a6 ... success
Caught exception: <type 'exceptions.IOError'>: [Errno 2] Directory does not exist.
正在尝试ssh代理密钥5e08bb83615bcc303ca84abe561ef0a6。。。成功
捕获的异常::[Errno 2]目录不存在。

打印
walker
显示该文件夹中的所有文件,但我不知道为什么该文件夹不复制到sftp服务器

,除非您已覆盖
os.walk()
它会生成一个包含三个对象的元组:
dirpath、dirnames、filenames

因此,您的
os.path.join(dir\u remote,walker)
调用将始终引发异常,从而导致预期的目录无法创建

我发现这样编写
os.walk()
循环更清晰:

for dirpath, dirnames, filenames in os.walk(parent):
    remote_path = os.path.join(dir_remote, dirpath)
    # make remote directory ...
    for filename in filenames:
        local_path = os.path.join(dirpath, filename)
        remote_fliepath = os.paht.join(remote_path, filename)
        # put file

请记住,
os.walk()
将遍历给定
父目录中的任何目录

我可以用什么来代替os.walk()…?你可以用walk,你只需要正确地使用它。如果你只关心一个目录,并且它是直接的子目录,请使用
os.listdir()
代替。好的,我试过了>os.listdir()。。它没有给我[Errno 2]这样的文件或目录:“2/1”
local\u filepath=[os.path.join(parent,filename)作为os.listdir(parent)中的文件名]