如何使用 SCPClient 创建目录

How can I create a directory with SCPClient

我正在尝试使用 SCPClient 将文件上传到远程服务器。如果目标目录不存在则失败

from scp import SCPClient, SCPException
...
with SCPClient(self.client.get_transport()) as scp:
    scp.put(source_path, target_path)

我正在努力寻找有助于澄清这一点的文档或示例。是否有可能有帮助的资源?

我假设您正在使用 scp module for paramiko。它似乎不支持使用目录。


如果确实需要使用SCP协议,可以试试scpclient library。它也没有明确的方法来创建目录。毕竟,这不是 SCP 协议的设计目的。

但是您的任务似乎是上传目录 – 上传目录,而不是文件:

with closing(WriteDir(ssh_client.get_transport(), "/target/dir")) as scp:
    scp.send_dir('/source/dir')

这将导致在上传过程中隐式创建目录(如果尚不存在)。


尽管我建议您改用 SFTP 协议。它内置于 Paramiko 中。所以你不需要任何外部库。 SFTP 支持您将需要的一切(与 SCP 相反)。

参见 Upload files using SFTP in Python, but create directories if path doesn't exist