将本地指定目录中的文件上传至远程SFTP服务器中,首先列出本地目录中待上传的文件列表,然后通过paramiko插件实现远程创建目录和上传文件。
# 将本地指定目录中的文件上传至远程SFTP服务器中,首先列出本地目录中待上传的文件列表,然后通过paramiko插件实现远程创建目录和上传文件。 from multiprocessing.connection import address_type from sys import excepthook import os import paramiko sftp_addr = '10.10.100.102' sftp_port = 22 sftp_user = 'my_username' sftp_pswd = 'my_password' sftp_fold = '/home/my_username/sftp/path/to/files/' file_path = os.getcwd() def list_local_files(directory): try: files = os.listdir(directory) files_list = [f for f in files if os.path.isfile(os.path.join(directory, f))] return files_list except Exception as e: print(f"Error: {e}") return [] def sftp_make_directory(host_addr, host_port, host_user, host_pswd, file_path): try: transport = paramiko.Transport((host_addr, host_port)) transport.connect(username=sftp_user, password=sftp_pswd) sftp = paramiko.SFTPClient.from_transport(transport) dir_list = file_path.split('/') #相对路径 #dir_list = file_path.strip('/').split('/') current_path = dir_list[0] for dir_name in dir_list[1:]: current_path = f"{current_path}/{dir_name}" try: sftp.stat(current_path) except FileNotFoundError: sftp.mkdir(current_path) sftp.close() transport.close() except Exception as e: print(f"Error: {e}") def sftp_upload_files(): sftp_make_directory(sftp_addr, sftp_port, sftp_user, sftp_pswd, sftp_fold) file_list = list_local_files(file_path) try: transport = paramiko.Transport(sftp_addr, sftp_port) transport.connect(username=sftp_user, password=sftp_pswd) sftp = paramiko.SFTPClient.from_transport(transport) for file in file_list: sftp.put(file, sftp_fold + '/' + file) print(f"文件'{file}'成功上传至'{sftp_fold}'") sftp.close() transport.close() except Exception as e: print(f"Error: {e}") if __name__ == '__main__': sftp_upload_files()
原创文章禁止转载:技术学堂 » 上传指定目录中的文件至远程SFTP服务器