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

1 year ago
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)