import
os
import
re
from
pathlib
import
Path
def
clean_name(name):
pattern
=
re.
compile
(r
'[^\u4e00-\u9fa5a-zA-Z0-9。#《》._-:+()()@]+'
)
return
pattern.sub('', name)
def
clean_directories(path):
for
root, dirs, files
in
os.walk(path, topdown
=
False
):
for
dir_name
in
dirs:
cleaned_name
=
clean_name(dir_name)
try
:
os.rename(os.path.join(root, dir_name),
os.path.join(root, cleaned_name))
except
OSError as e:
print
(f
"Error renaming directory {dir_name}: {e}"
)
def
clean_files(path):
for
root, dirs, files
in
os.walk(path):
for
file_name
in
files:
cleaned_name
=
clean_name(file_name)
try
:
os.rename(os.path.join(root, file_name),
os.path.join(root, cleaned_name))
except
OSError as e:
print
(f
"Error renaming file {file_name}: {e}"
)
def
rename_images(path):
image_extensions
=
[
'.png'
,
'.jpg'
,
'.jpeg'
,
'.gif'
,
'.bmp'
,
'.tiff'
,
'.svg'
]
for
root, dirs, files
in
os.walk(path):
for
file_name
in
files:
extension
=
os.path.splitext(file_name)[
1
].lower()
if
extension
in
image_extensions:
dir_name
=
Path(root).name
new_file_name
=
f"{clean_name(dir_name)}_{
clean_name(file_name)}"
try
:
os.rename(os.path.join(root, file_name),
os.path.join(root, new_file_name))
except
OSError as e:
print
(f
"Error renaming image {file_name}: {e}"
)
def
main():
current_dir
=
os.getcwd()
clean_directories(current_dir)
clean_files(current_dir)
rename_images(current_dir)
if
__name__
=
=
"__main__"
:
main()