1 ## @file 2 # Define a dictionary structure 3 # 4 # Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR> 5 # This program and the accompanying materials 6 # are licensed and made available under the terms and conditions of the BSD License 7 # which accompanies this distribution. The full text of the license may be found at 8 # http://opensource.org/licenses/bsd-license.php 9 # 10 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 # 13 14 ## 15 # Import Modules 16 # 17 import EdkLogger 18 from DataType import * 19 from Common.LongFilePathSupport import OpenLongFilePath as open 20 21 ## Convert a text file to a dictionary 22 # 23 # Convert a text file to a dictionary of (name:value) pairs. 24 # 25 # @retval 0 Convert successful 26 # @retval 1 Open file failed 27 # 28 def ConvertTextFileToDictionary(FileName, Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter): 29 try: 30 F = open(FileName, 'r') 31 Keys = [] 32 for Line in F: 33 if Line.startswith(CommentCharacter): 34 continue 35 LineList = Line.split(KeySplitCharacter, 1) 36 if len(LineList) >= 2: 37 Key = LineList[0].split() 38 if len(Key) == 1 and Key[0][0] != CommentCharacter and Key[0] not in Keys: 39 if ValueSplitFlag: 40 Dictionary[Key[0]] = LineList[1].replace('\\', '/').split(ValueSplitCharacter) 41 else: 42 Dictionary[Key[0]] = LineList[1].strip().replace('\\', '/') 43 Keys += [Key[0]] 44 F.close() 45 return 0 46 except: 47 EdkLogger.info('Open file failed') 48 return 1 49 50 ## Print the dictionary 51 # 52 # Print all items of dictionary one by one 53 # 54 # @param Dict: The dictionary to be printed 55 # 56 def printDict(Dict): 57 if Dict != None: 58 KeyList = Dict.keys() 59 for Key in KeyList: 60 if Dict[Key] != '': 61 print Key + ' = ' + str(Dict[Key]) 62 63 ## Print the dictionary 64 # 65 # Print the items of dictionary which matched with input key 66 # 67 # @param list: The dictionary to be printed 68 # @param key: The key of the item to be printed 69 # 70 def printList(Key, List): 71 if type(List) == type([]): 72 if len(List) > 0: 73 if Key.find(TAB_SPLIT) != -1: 74 print "\n" + Key 75 for Item in List: 76 print Item 77