Skip to content

Commit fadd677

Browse files
committed
-
1 parent 74b3c62 commit fadd677

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

source_py3/python_toolbox/file_tools.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,15 @@ def iterate_file_paths(path):
6262
def 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',
8190
def 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

Comments
 (0)