将上述代码整合进批量提取某一目录中mtl文件中所有贴图的文件名,以上列表保存为以当前目录名称同名的文本文档,内容以行隔开
时间: 2024-12-12 21:30:08 浏览: 11
你可以将之前的Python代码稍作修改,加入读取.mtl文件和提取贴图文件名的功能,并将结果写入文本文件。这里假设.mtl文件中的贴图信息存储在纹理坐标部分。以下是相应的代码段:
```python
import os
import re
import glob
def extract_texture_names(mtl_file_path):
with open(mtl_file_path, 'r') as f:
content = f.read()
texture_pattern = r"map_Kd\s*\(.*\);"
matches = re.findall(texture_pattern, content, re.IGNORECASE)
return [match.split("'")[1] for match in matches]
def save_to_text_file(directory, output_filename='texture_list.txt'):
texture_files = []
mtl_files = glob.glob(os.path.join(directory, '*.mtl'))
for mtl in mtl_files:
textures = extract_texture_names(mtl)
texture_files.extend(textures)
with open(output_filename, 'w', encoding='utf-8') as f:
for texture in set(texture_files): # 去除重复
f.write(f'{texture}\n')
# 调用函数并传入目标目录
save_to_text_file('your_directory_path')
```
这个代码首先定义了两个辅助函数,`extract_texture_names`用于从.mtl文件中提取贴图文件名,`save_to_text_file`负责收集所有.mtl文件中的贴图,去除重复项并将其写入文本文件。
请将`'your_directory_path'`替换为你想要处理的实际目录路径。
阅读全文