airflow.providers.ftp.hooks.ftp¶
属性¶
类¶
与 FTP 交互。 |
|
与 FTPS 交互。 |
模块内容¶
- class airflow.providers.ftp.hooks.ftp.FTPHook(ftp_conn_id=default_conn_name)[源码]¶
基类:
airflow.hooks.base.BaseHook
与 FTP 交互。
整个过程中可能发生但应在下游处理的错误。您可以在连接的 extra 字段中指定数据传输模式,例如
{"passive": "true"}
。- conn: ftplib.FTP | None = None[源码]¶
- describe_directory(path)[源码]¶
对于支持 MLSD 的远程系统上的所有文件,返回一个 {文件名: {属性}} 的字典。
- 参数:
path (str) – 远程目录的完整路径
- retrieve_file(remote_full_path, local_full_path_or_buffer, callback=None, block_size=8192)[源码]¶
将远程文件传输到本地位置。
如果 local_full_path_or_buffer 是一个字符串路径,文件将被存放在该位置;如果它是一个文件类缓冲区,文件将被写入缓冲区但不会关闭。
- 参数:
hook = FTPHook(ftp_conn_id="my_conn") remote_path = "/path/to/remote/file" local_path = "/path/to/local/file" # with a custom callback (in this case displaying progress on each read) def print_progress(percent_progress): self.log.info("Percent Downloaded: %s%%" % percent_progress) total_downloaded = 0 total_file_size = hook.get_size(remote_path) output_handle = open(local_path, "wb") def write_to_file_with_progress(data): total_downloaded += len(data) output_handle.write(data) percent_progress = (total_downloaded / total_file_size) * 100 print_progress(percent_progress) hook.retrieve_file(remote_path, None, callback=write_to_file_with_progress) # without a custom callback data is written to the local_path hook.retrieve_file(remote_path, local_path)