3.6 KiB
3.6 KiB
Save Text 🐍
Documentation
- Class name: SaveText|pysssss
- Category: utils
- Output node: False
- Repo Ref: https://github.com/pythongosssss/ComfyUI-Custom-Scripts
SaveText节点用于将文本写入文件,并提供附加到现有文件或创建新文件的选项。它抽象了文件处理的复杂性,确保根据指定参数准确保存文本数据。
Input types
Required
- root_dir
- 指定文件将保存到的根目录。对于确定文件的保存位置并确保文件路径正确构建至关重要。
- Comfy dtype: COMBO[STRING]
- Python dtype: str
- file
- 要保存文本的文件的名称。此参数对于确定要写入或创建的特定文件至关重要。
- Comfy dtype: STRING
- Python dtype: str
- append
- 控制文本是应附加到现有文件还是应创建新文件。它影响文本的保存方式,是通过添加到现有内容还是重新开始。
- Comfy dtype: COMBO[STRING]
- Python dtype: str
- insert
- 决定在附加文本到现有文件之前是否应插入换行符。它影响附加文本的格式。
- Comfy dtype: BOOLEAN
- Python dtype: str
- text
- 要写入文件的文本内容。此参数是节点功能的核心,因为它指定要保存的实际数据。
- Comfy dtype: STRING
- Python dtype: str
Output types
- string
- Comfy dtype: STRING
- 返回写入文件的文本,提供操作成功的反馈。
- Python dtype: str
Usage tips
- Infra type: CPU
- Common nodes: unknown
Source code
class SaveText(TextFileNode):
@classmethod
def IS_CHANGED(self, **kwargs):
return float("nan")
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"root_dir": (list(get_valid_dirs()), {}),
"file": ("STRING", {"default": "file.txt"}),
"append": (["append", "overwrite", "new only"], {}),
"insert": ("BOOLEAN", {
"default": True, "label_on": "new line", "label_off": "none",
"pysssss.binding": [{
"source": "append",
"callback": [{
"type": "if",
"condition": [{
"left": "$source.value",
"op": "eq",
"right": '"append"'
}],
"true": [{
"type": "set",
"target": "$this.disabled",
"value": False
}],
"false": [{
"type": "set",
"target": "$this.disabled",
"value": True
}],
}]
}]
}),
"text": ("STRING", {"forceInput": True, "multiline": True})
},
}
FUNCTION = "write_text"
def write_text(self, **kwargs):
self.file = get_file(kwargs["root_dir"], kwargs["file"])
if kwargs["append"] == "new only" and os.path.exists(self.file):
raise FileExistsError(
self.file + " already exists and 'new only' is selected.")
with open(self.file, "a+" if kwargs["append"] == "append" else "w") as f:
is_append = f.tell() != 0
if is_append and kwargs["insert"]:
f.write("\n")
f.write(kwargs["text"])
return super().load_text(**kwargs)