Ich habe eine Funktion erstellt, die Dateien in einem Verzeichnis analysiert und die Werte in einer Liste speichert. Ich führe dann die Funktion auf drei verschiedenen Verzeichnissen aus. Sobald ich das tue, möchte ich dann die Listen vergleichen, um zu sehen, ob sie gleich sind. Die Funktion führt jedoch immer False zurück, auch wenn ich dieselben Dateien in jedem Verzeichnis kopiere und einfüge. Unten sind die zwei Funktionen, mit denen ich arbeite.Vergleichen von zwei Listen nach dem Parse von einem Verzeichnis
ParseFiles Funktion:
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)
Vergleichen Parse:
def ParseCompare(L1, L2):
if len(L1) != len(L2):
return False
for val in L1:
if val in L2:
return False
return True
Testing Parse:
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")
'für val in L1: wenn val in L2: zurück False'. Also, wenn Sie zwei Listen präsentieren und sie ein Element gemeinsam haben, sollte die Funktion 'False' zurückgeben? – roganjosh
, so dass Ihre Funktion "None" oder eine 1-Item-Liste zurückgibt. Ist das beabsichtigt? –
Ich möchte, dass es False zurückgibt, wenn die Listen nicht übereinstimmen. Wahr sonst. Wenn es wahr ist, will ich nichts damit anfangen. Wenn es falsch ist, werde ich andere Dinge tun. – NineTail