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.
		
		
		
		
		
			
		
			
	
	
		
			48 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
| 
											6 months ago
										 | import os | ||
|  | import re | ||
|  | 
 | ||
|  | 
 | ||
|  | class GsdParser: | ||
|  |     @classmethod | ||
|  |     def parseGsdFiles(cls): | ||
|  |         folderPath = 'D:\\EnTalk PROFIBUS Manager\\GSD' | ||
|  |         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) |