# 获取目录下所有的dwg文件名和文件路径
import os
import re
import sys
import json
def get_files_in_directory(directory, fileension):
# 创建一个字典来存储目录和文件名
directory_map = {}
# 遍历目录及其子目录
for root, dirs, files in os.walk(directory):
# 将当前目录下的所有文件名添加到字典中
for file in files:
if file.endswith(fileension):
# 获取当前目录名
fileName = os.path.join(root, file)
current_dir = root.replace(path, "")
# current_dir = re.sub(r'\\', '-',os.path.dirname(fileName))
current_dir = re.sub(r"\\", "-", current_dir)
# 如果当前目录名不在字典中,则添加它
if current_dir not in directory_map:
directory_map[current_dir] = []
directory_map[current_dir].append(file)
return directory_map
# 获取当前脚本目录
def get_current_file_path():
# 通过命令行参数获取当前脚本的绝对路径
abs_file = sys.argv[0]
# 将路径中的斜杠替换为反斜杠,以适应Windows系统
windows_path = abs_file.replace("/", "\\")
# 去除路径中的脚本文件名,仅保留目录部分
windows_path = windows_path[: windows_path.rfind("\\")]
# 返回脚本所在的目录路径
return windows_path
def get_special_file(directory_map, isCopy=False):
"""
处理特殊文件。
根据提供的目录映射字典,对每个文件进行处理。如果指定复制,则将文件从原始位置复制到新位置。
参数:
directory_map (dict): 一个字典,键为目录名,值为该目录下的文件列表。
isCopy (bool): 是否复制文件,默认为False。
返回:
list: 包含处理过的文件名的列表。
"""
# 创建一个列表来存储处理过的文件名
fileNameList = []
# 遍历目录映射字典中的每个目录和文件
for directory, files in directory_map.items():
for file in files:
# 排除空目录
if directory != "":
# 如果目录名末尾没有"-",则添加之
if directory[-1] != "-":
directory += "-"
# 组合得到文件的完整名
svgName = directory + file
# 准备文件的源路径和目标路径
preSvgName = path + directory.replace("-", "\\") + file
# 将文件名(不包含扩展名)添加到列表中
fileNameList.append(svgName.split(".")[0])
# 准备文件的新路径
newSvgName = path + svgName
# 如果指定复制文件,则执行复制操作
if isCopy:
os.system(f"copy {preSvgName} {newSvgName}")
# 返回处理过的文件名列表
return fileNameList
if __name__ == "__main__":
print(
"""
fileension: \033[34mdwg,dxf, svg,pdf,bmp,png\033[0m等等
isCopy: 是否复制文件到当前目录
获取目录下所有的dwg文件名和文件路径
"""
)
# path = get_current_file_path()
# if path is None:
path = "E:\\Gitee\\vue\\gallery\\Gallery\\src\\assets\\icons\\"
# 如果path最后不带\\结尾,则添加\\
if path[-1] != "\\":
path += "\\"
print(path)
isCopy = input("是否复制文件到当前目录?(y/n)")
if isCopy == "y":
isCopy = True
else:
isCopy = False
fileension = input("请输入文件后缀名:")
if fileension == "":
fileension = ".svg"
if fileension[0] != ".":
fileension = "." + fileension
directory_map = get_files_in_directory(path, fileension)
fileNameList = get_special_file(directory_map, isCopy)
# 将filenameList写入list.json文件,key值为filename
final_dict = {"data": [{"name": fileName} for fileName in fileNameList]}
# 转换为 JSON
json_string = json.dumps(final_dict, ensure_ascii=False)
with open(f"{path}\\list.json", "w", encoding="utf-8") as file:
file.write(json_string)
print(f"{path}\\list.json")