3.9 KiB
3.9 KiB
tags
| tags | |
|---|---|
|
Save Text 🐍
Documentation
- Class name:
SaveText|pysssss - Category:
utils - Output node:
False
The SaveText node is designed for writing text to a file, with options to append to an existing file or create a new one. It abstracts the complexities of file handling, ensuring that text data is accurately saved according to the specified parameters.
Input types
Required
root_dir- Specifies the root directory where the file will be saved. It is crucial for determining the file's save location and ensuring the file's path is correctly constructed.
- Comfy dtype:
COMBO[STRING] - Python dtype:
str
file- The name of the file to save the text to. This parameter is essential for identifying the specific file to be written to or created.
- Comfy dtype:
STRING - Python dtype:
str
append- Controls whether the text should be appended to an existing file or a new file should be created. It affects how the text is saved, either by adding to the existing content or starting fresh.
- Comfy dtype:
COMBO[STRING] - Python dtype:
str
insert- Determines if a newline should be inserted before appending text to an existing file. It influences the formatting of the appended text.
- Comfy dtype:
BOOLEAN - Python dtype:
str
text- The text content to be written to the file. This parameter is central to the node's functionality, as it specifies the actual data to be saved.
- Comfy dtype:
STRING - Python dtype:
str
Output types
string- Comfy dtype:
STRING - Returns the text that was written to the file, providing feedback on the operation's success.
- Python dtype:
str
- Comfy dtype:
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)