我正在尝试使用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。