gpt4 book ai didi

python - 使用 Paramiko 的 SFTPClient 在远程路径中使用通配符

转载 作者:行者123 更新时间:2023-11-30 22:09:37 26 4
gpt4 key购买 nike

我想将文件从远程服务器复制到本地。

import paramiko
paramiko.util.log_to_file('/tmp/paramiko.log')

# open transport
username = "user"
host="example.com"
port = 22
transport = paramiko.Transport((host, port))
transport.start_client()
private_key_file = "/home/user/.ssh/id_rsa"
agent = paramiko.Agent()
key = paramiko.RSAKey.from_private_key_file(private_key_file)
transport.auth_publickey(username, key)

# get sftp client
sftp = paramiko.SFTPClient.from_transport(transport)
source = "/home/user/user_1.csv"
target = "/home/local/local_sftp.txt"
sftp.get(x[0], x[1])

上面的代码工作正常,但我想使用 source = "/home/user/user_*.csv" 但这个通配符没有被评估。有人可以帮我解决这个问题吗?

我找到了one solution for SCPClient但无法解决 SFTPClient 的问题。

最佳答案

Paramiko SFTPClient 不支持通配符。

因此,您必须自己列出远程文件夹中的文件并将其过滤为您想要下载的文件:

import re
remote_path = "/home/user"
local_path = "/home/local"

files = sftp.listdir(remote_path)

for filename in files:
if re.match("^user_.*\\.csv$", filename):
print(filename)
sftp.get(remote_path + "/" + filename, local_path + "/" + filename)

或者使用fnmatch模块。请参阅List files on SFTP server matching wildcard in Python using Paramiko .

关于python - 使用 Paramiko 的 SFTPClient 在远程路径中使用通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51866185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com