forked from j3lf/CodeHSPython
-
Notifications
You must be signed in to change notification settings - Fork 0
/
rename.py
27 lines (24 loc) · 817 Bytes
/
rename.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
"""Renames all the files as safe filenames"""
import os
def fix_name(fullpath: str) -> str:
"Fixes a filename"
path, name = os.path.split(fullpath)
root, ext = os.path.splitext(name)
return path + "/" + "".join(
"-" if char == " " or char == "-" else
char if char.isalnum() or char == "." else
"" for char in root
) + ext
def recurse(path: str, depth: int = 0) -> None:
"Recurses down directory paths to fix all their filenames"
tabs = "\t" * depth
print(tabs + "Recursing down " + path)
for scan in os.scandir(path):
path = scan.path
if scan.is_dir():
recurse(path, depth + 1)
continue
newpath = fix_name(path)
print(f"\t{tabs}{path} => {newpath}")
os.rename(path, newpath)
recurse("./")