torch.package.file_structure_representation 的源代码
# mypy: 允许未类型化定义
from .glob_group 导入
通用模式组,
全局模式
全部 = [
目录]
[文档]
类
目录:
文件结构表示。以目录节点组织,包含列表
他们的目录子项。通过调用创建包的目录。
`PackageImporter.file_structure`。"""
定义 __init__(
我,
名称:
字符串,
是否为目录:
布尔):
我.
名称 =
名称
我.is_dir = is_dir
我.
儿童:
字典[
字符串,
目录] = {}
定义 _get_dir(
我, dirs:
列表[
字符串]) ->
目录:
如果尚未构建,则构建目录路径并返回列表中的最后一个目录
。
参数:
dirs (List[str]): 目录名称列表,被视为路径。
返回:
class:`Directory`: dirs 列表中指定的最后一个 Directory。
"文档"
如果
长度(dirs) == 0:
返回 self
目录名 = dirs[0]
如果
目录名
不
在
我.
儿童:
我.
儿童[
目录名] =
目录(
目录名,
是)
返回
我.
儿童[
目录名]._get_dir(dirs[1
])
定义
添加文件(
我,
文件路径:
字符串):
添加文件到目录。
参数:
文件路径(字符串):要添加的文件的路径。最后一个元素作为文件添加。
其他路径项被添加为目录。
"文档"
*dirs, 文件 =
文件路径.
分割(
根目录)
目录 =
我._get_dir(dirs)
目录.
儿童[
文件] =
目录(
文件,
错误)
[文档] def has_file(self, filename: str) -> bool:
检查文件是否存在于一个 :class:`Directory` 目录中。
参数:
filename (str): 要搜索的文件路径。
返回:
bool: 如果一个 :class:`Directory` 包含指定的文件。
"""
lineage = filename.split("/", maxsplit=1)
child = lineage[0]
grandchildren = lineage[1] if len(lineage) > 1 else None
if child in self.children.keys():
if grandchildren is None:
return True
else:
返回 self.children[child].has_file(grandchildren)
返回 False
定义 __str__(
我):
字符串列表:
列表[
字符串] =
输入文本为空,请提供需要翻译的文本
我._stringify_tree(
字符串列表)
返回
输入文本翻译为简体中文为:"".
连接(
字符串列表)
定义 _stringify_tree(
我,
字符串列表:
列表[
字符串
],
序言:
字符串 =
输入文本翻译为简体中文为:"",
dir_ptr: 字符串 = "
└── ",
):
生成目录的打印友好版本的递归方法。
空间 = " "
分支 = "
│ "
茶几 = "
▼││ "
最后一个 = "
▲▲▲ "
添加此目录的表示
字符串列表.append(f"{
序言}{
dir_ptr
目录指针}{我.
名称}
输入文本翻译为简体中文为:\n")
添加目录子项表示
如果
指针 ==
三通:
前置 =
前置 +
分支
否则:
序言 =
序言 +
空间
文件键:
列表[
字符串] =
输入文本为空,请提供需要翻译的文本
目录键:
列表[
字符串] =
输入文本为空,请提供需要翻译的文本
for 键, val
在
我.
儿童.
项目():
如果 val.
是否为目录:
目录键.append(
键)
否则:
文件键.append(
键)
for 索引, key
在
列举(
排序(
目录键)):
如果 (
索引 ==
长度(
目录键) - 1)
并且
长度(
文件键) == 0:
我.
儿童[
键]._stringify_tree(
字符串列表,
序言,
最后)
否则:
我.
儿童[
键]._stringify_tree(
字符串列表,
序言, tee)
for 索引,
文件
在
列举(
排序(
文件键)):
指针 =
最后一个
如果 (
索引 ==
长度(
文件键) - 1)
否则
茶几
字符串列表.append(f"{
序言}{
指针}{
文件}
输入文本翻译为简体中文为:\n")
定义
从文件列表创建目录(
文件名:
字符串,
文件列表:
列表[
字符串
],
包含:
"全局模式" = "**",
排除:
"全局模式" = (),
) -> 目录:
返回一个由文件列表创建的 :class:`Directory` 文件结构表示。
参数:
filename (str): 顶级目录的名称(字符串类型)
相对根目录,用于存放文件列表中所有文件路径。
file_list (List[str]): 要添加到顶级目录的文件列表。
include (Union[List[str], str]): 可选的模式,用于限制从文件列表中包含匹配该模式的文件。
文件名。
排除(Union[List[str], str]):一个可选的模式,用于排除与该模式匹配的文件。
返回:
class:`目录`:由文件列表创建的 :class:`目录` 文件结构表示。
"文档"
通用模式 =
通用模式组(
包含,
排除=
排除,
分隔符=
根目录)
顶级目录 =
目录(
文件名,
是)
for 文件
在
文件列表:
如果
通配符模式.
匹配(
文件):
顶层目录.
添加文件(
文件)
返回
顶级目录