@@ -62,6 +62,15 @@ def iterate_file_paths(path):
6262def create_file_renaming_if_taken (path , mode = 'x' ,
6363 buffering = - 1 , encoding = None ,
6464 errors = None , newline = None ):
65+ '''
66+ Create a new file with name `path` for writing, renaming it if name taken.
67+
68+ If the name given is "example.zip", the new name would be "example
69+ (1).zip", and if that's taken "example (1).zip", and so on.
70+
71+ Returns the file open and ready for writing. It's best to use this as a
72+ context manager similarly to `open` so the file would be closed.
73+ '''
6574 assert 'x' in mode
6675 for path in cute_iter_tools .shorten (iterate_file_paths (pathlib .Path (path )),
6776 N_MAX_ATTEMPTS ):
@@ -81,6 +90,12 @@ def create_file_renaming_if_taken(path, mode='x',
8190def write_to_file_renaming_if_taken (path , data , mode = 'x' ,
8291 buffering = - 1 , encoding = None ,
8392 errors = None , newline = None ):
93+ '''
94+ Write `data` to a new file with name `path`, renaming it if name taken.
95+
96+ If the name given is "example.zip", the new name would be "example
97+ (1).zip", and if that's taken "example (1).zip", and so on.
98+ '''
8499 with create_file_renaming_if_taken (
85100 path , mode = mode , buffering = buffering , encoding = encoding , errors = errors ,
86101 newline = newline ) as file :
0 commit comments