You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
import os
|
|
import re
|
|
|
|
|
|
class GsdParser:
|
|
@classmethod
|
|
def parseGsdFiles(cls, folderPath):
|
|
gsdData = []
|
|
for filename in os.listdir(folderPath):
|
|
if filename.lower().endswith('.gsd'):
|
|
filePath = os.path.join(folderPath, filename)
|
|
identNumber, modelName = cls.parseGsdFile(filePath)
|
|
if identNumber and modelName:
|
|
gsdData.append({
|
|
'filename': filename,
|
|
'identNumber': identNumber,
|
|
'modelName': modelName
|
|
})
|
|
return gsdData
|
|
|
|
@classmethod
|
|
def parseGsdFile(cls, filePath):
|
|
identNumber = None
|
|
modelName = None
|
|
with open(filePath, 'r', encoding='utf-8', errors='ignore') as file:
|
|
content = file.read().replace(' ', '')
|
|
identNumberMatch = re.search(r'Ident_Number=(\w+)', content)
|
|
modelNameMatch = re.search(r'Model_Name="(.+?)"', content)
|
|
|
|
if identNumberMatch:
|
|
identNumber = identNumberMatch.group(1)[2:]
|
|
if modelNameMatch:
|
|
modelName = modelNameMatch.group(1)
|
|
|
|
return identNumber, modelName
|
|
|
|
|
|
# 示例用法
|
|
if __name__ == '__main__':
|
|
folderPath = './' # 替换为实际的文件夹路径
|
|
parsedData = GsdParser.parseGsdFiles(folderPath)
|
|
|
|
for gsdInfo in parsedData:
|
|
print(f"File: {gsdInfo['filename']}")
|
|
print(f"Ident_Number: {gsdInfo['identNumber']}")
|
|
print(f"Model_Name: {gsdInfo['modelName']}")
|
|
print("-" * 40) |