Create safe filename string
Snippet
def safe_filename(s: str, replacement: str = "_") -> str:
"""
Convert a string to a safe filename by replacing unsafe characters.
Args:
s (str): The input string to be converted.
replacement (str): The character to replace unsafe characters with. Default is "_".
Returns:
str: A safe filename string.
"""
keep_chars = (" ", ".", "_", "-")
safe_name = "".join(c if c.isalnum() or c in keep_chars else replacement for c in s)
safe_name = safe_name.strip().strip(".")
return safe_name
if __name__ == "__main__":
test_cases_safe_filename = [
("example<file>name.txt", "example_file_name.txt"),
("unsafe:/\\|?*name.doc", "unsafe______name.doc"),
("normal_filename.pdf", "normal_filename.pdf"),
(" leading and trailing spaces ", "leading and trailing spaces"),
("file.name.with.many.dots...", "file.name.with.many.dots"),
("control\x00char\x1fname", "control_char_name"),
]
# Test safe_filename function
print("Testing safe_filename function:")
for input_str, expected_output in test_cases_safe_filename:
result = safe_filename(input_str)
assert result == expected_output, (
f"Failed for input '{input_str}': got '{result}', expected '{expected_output}'"
)
print("\nAll tests passed!")
By
xtream1101
•
•
Updated
2025-10-15 14:35