PythonでSFTPを使用してディレクトリとサブディレクトリを再帰的に検索する方法
Paramikoライブラリでは、SFTPを使用してディレクトリとそのサブディレクトリを走査できます。以下にサンプルコードを示します。
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ライブラリがインストールされており、渡された引数は有効であると仮定されています。my_host、my_username、my_password、path_to_my_folderを実際の値に置き換える必要があります。