airflow.providers.ftp.hooks.ftp

属性

logger

FTPHook

与 FTP 交互。

FTPSHook

与 FTPS 交互。

模块内容

airflow.providers.ftp.hooks.ftp.logger[源码]
class airflow.providers.ftp.hooks.ftp.FTPHook(ftp_conn_id=default_conn_name)[源码]

基类: airflow.hooks.base.BaseHook

与 FTP 交互。

整个过程中可能发生但应在下游处理的错误。您可以在连接的 extra 字段中指定数据传输模式,例如 {"passive": "true"}

参数:

ftp_conn_id (str) – ftp 连接 ID 参考。

conn_name_attr = 'ftp_conn_id'[源码]
default_conn_name = 'ftp_default'[源码]
conn_type = 'ftp'[源码]
hook_name ='FTP'[源码]
ftp_conn_id = 'ftp_default'[源码]
conn: ftplib.FTP | None = None[源码]
__enter__()[源码]
__exit__(exc_type, exc_val, exc_tb)[源码]
get_conn()[源码]

返回一个 FTP 连接对象。

close_conn()[源码]

关闭连接;如果连接从未打开,则会发生错误。

describe_directory(path)[源码]

对于支持 MLSD 的远程系统上的所有文件,返回一个 {文件名: {属性}} 的字典。

参数:

path (str) – 远程目录的完整路径

list_directory(path)[源码]

返回远程系统上的文件列表。

参数:

path (str) – 要列出的远程目录的完整路径

create_directory(path)[源码]

在远程系统上创建一个目录。

参数:

path (str) – 要创建的远程目录的完整路径

delete_directory(path)[源码]

在远程系统上删除一个目录。

参数:

path (str) – 要删除的远程目录的完整路径

retrieve_file(remote_full_path, local_full_path_or_buffer, callback=None, block_size=8192)[源码]

将远程文件传输到本地位置。

如果 local_full_path_or_buffer 是一个字符串路径,文件将被存放在该位置;如果它是一个文件类缓冲区,文件将被写入缓冲区但不会关闭。

参数:
  • remote_full_path (str) – 远程文件的完整路径

  • local_full_path_or_buffer (Any) – 本地文件的完整路径或文件类缓冲区

  • callback (Callable | None) – 每次读取一块数据时调用的回调函数。如果您不使用回调函数,这些块将被写入传入的文件或缓冲区。如果您确实传入了回调函数,请注意向文件或缓冲区写入数据的操作需要在回调函数内部处理。 [默认值: output_handle.write()]

  • block_size (int) – 文件以默认大小 8192 或用户设置的大小分块传输

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)
store_file(remote_full_path, local_full_path_or_buffer, block_size=8192)[源码]

将本地文件传输到远程位置。

如果 local_full_path_or_buffer 是一个字符串路径,文件将从该位置读取;如果它是一个文件类缓冲区,文件将从缓冲区读取但不会关闭。

参数:
  • remote_full_path (str) – 远程文件的完整路径

  • local_full_path_or_buffer (Any) – 本地文件的完整路径或文件类缓冲区

  • block_size (int) – 文件以默认大小 8192 或用户设置的大小分块传输

delete_file(path)[源码]

删除 FTP 服务器上的文件。

参数:

path (str) – 远程文件的完整路径

rename(from_name, to_name)[源码]

重命名文件。

参数:
  • from_name (str) – 要重命名的文件原名称

  • to_name (str) – 重命名后的文件新名称

get_mod_time(path)[源码]

返回一个表示文件上次修改时间的 datetime 对象。

参数:

path (str) – 远程文件路径

get_size(path)[源码]

返回文件大小(以字节为单位)。

参数:

path (str) – 远程文件路径

test_connection()[源码]

通过使用目录调用路径来测试 FTP 连接。

class airflow.providers.ftp.hooks.ftp.FTPSHook(ftp_conn_id=default_conn_name)[源码]

基类: FTPHook

与 FTPS 交互。

get_conn()[源码]

返回一个 FTPS 连接对象。

此条目有帮助吗?