0
我創建了一個函數,它將解析目錄中的文件並將值保存在列表中。然後我在三個不同的目錄上運行該功能。一旦我這樣做,然後我想比較列表,看看它們是否相等。但是,即使在每個目錄中複製並粘貼相同文件時,執行此操作的函數也始終返回False。以下是我正在使用的兩個功能。從目錄解析後比較兩個列表
ParseFiles功能:
def ParseFiles(path):
for filename in os.listdir(path):
# check filename to ensure it ends in appropriate file extension
if filename.endswith(('.cfg', '.startup', 'confg')):
# concatinate os path and filename
file_name = os.path.join(path, filename)
with open(file_name, "r") as in_file:
for line in in_file:
# match everything after hostname
match = re.search('^hostname\s(\S+)$', line)
#store match in a list for use later
if match:
hostname = [match.group(1)]
return hostname
#print (hostname)
比較解析:
def ParseCompare(L1, L2):
if len(L1) != len(L2):
return False
for val in L1:
if val in L2:
return False
return True
測試解析:
archiveParse = ParseFiles(TEST_PATH)
startupParse = ParseFiles(TEST_PATH_1)
runningParse = ParseFiles(TEST_PATH_2)
print ParseCompare(startupParse, archiveParse)
if ParseCompare(startupParse, archiveParse) == False:
print("Startup does not match Archive")
if ParseCompare(startupParse, runningParse) == False:
print("Startup and Running do not match")
if ParseCompare(runningParse, archiveParse) == False:
print("Running does not match Archive")
else:
print("Compared OK")
'對於L1中的val:if val in L2:return False'。因此,如果您列出兩個列表並且它們有一個共同的項目,那麼函數應該返回'False'? – roganjosh
所以你的函數返回'None'或者是1-item列表。那是故意的嗎? –
如果列表不匹配,我希望它返回False。否則爲真。如果是真的,我不想對它做任何事情。如果它是假的,我會做其他事情。 – NineTail