要使用sftp遍歷文件夾和子文件夾,可以使用paramiko庫。以下是一個示例代碼:
import paramiko
def traverse_folder(sftp, folder_path):
files = sftp.listdir(folder_path)
for file in files:
file_path = folder_path + "/" + file
try:
sftp.chdir(file_path)
traverse_folder(sftp, file_path)
except:
print(file_path) # 打印文件路徑
def sftp_traverse(host, port, username, password, folder_path):
transport = paramiko.Transport((host, port))
transport.connect(username=username, password=password)
sftp = transport.open_sftp()
traverse_folder(sftp, folder_path)
sftp.close()
transport.close()
# 示例用法
host = "your_host"
port = 22
username = "your_username"
password = "your_password"
folder_path = "/path/to/your/folder"
sftp_traverse(host, port, username, password, folder_path)
在上述代碼中,traverse_folder
函數用于遞歸遍歷文件夾和子文件夾。首先,它會列出當前文件夾下的所有文件和文件夾。然后,它會嘗試進入每個子文件夾并遞歸調用自身。如果無法進入某個文件夾,說明該文件是一個文件而不是文件夾,然后打印出文件路徑。
sftp_traverse
函數用于建立與遠程主機的連接,并調用traverse_folder
函數進行遍歷。
注意,此示例代碼假設你已經安裝了paramiko庫,并且傳入的參數有效。你需要將your_host
,your_username
,your_password
和/path/to/your/folder
替換為實際的值。