Итак, у меня есть этот код, он в основном работает нормально, если я указываю указанный файл c для сравнения: но как только я создаю переменную, позволяющую пользователю вводить имя файла, а затем сравниваю, я получаю следующие ошибки .
Вот мой код в настоящее время.
def open_file_and_return_list(file_path):
list = []
with open(file_path, 'r') as f:
line = f.readline()
while line:
list.append(line)
line = f.readline()
return list
def clean_new_line(list):
for i in range(len(list)):
if "\n" in list[i]:
list[i] = list[i].replace("\n", "")
return list
if __name__ == "__main__":
s1 = input("INFO: Select the first file to compare: ")
s2 = input("INFO: Select the first file to compare: ")
list1 = open_file_and_return_list(r"new.txt")
list2 = open_file_and_return_list(r"standard.txt")
maxl = max(len(list1), len(list2))
list1 += [''] * (maxl - len(list1))
list2 += [''] * (maxl - len(list2))
diff = []
diff_file = input("\nINFO: Select what to name the difference(s) : ")
open(diff_file, 'w').close()
for iline, (l1, l2) in enumerate(zip(list1, list2)):
if l1 != l2:
print(iline, l1, l2)
print(iline, l1, l2, file=open(diff_file, 'a'))
Я получаю ошибку:
list1 = open_file_and_return_list('r', s1)
TypeError: open_file_and_return_list() takes 1 positional argument but 2 were given
Я хочу разрешить пользователю снова указывать файлы сравнивать, так как у них всегда будут разные имена и они будут "джокерами"
s1 = input("INFO: Select the first file to compare: ")
s2 = input("INFO: Select the first file to compare: ")
Что я делаю не так? Мой логик c совершенно не в порядке? Или мои застекленные глаза пропускают что-то маленькое.
РЕДАКТИРОВАТЬ
Точный код, который я использую:
elif device_type == "7":
print("\n")
print("************************************")
print("***** *****")
print("***** Comparision Checker *****")
print("***** Of Two Configs *****")
print("************************************")
print("\n")
print('\nWARNING: Discrepancies found:')
def open_file_and_return_list(file_path):
list = []
with open(file_path, 'r') as f:
line = f.readline()
while line:
list.append(line)
line = f.readline()
return list
def clean_new_line(list):
for i in range(len(list)):
if "\n" in list[i]:
list[i] = list[i].replace("\n", "")
return list
if __name__ == "__main__":
s1 = input("INFO: Select the first file to compare: ")
s2 = input("INFO: Select the first file to compare: ")
list1 = open_file_and_return_list(r"new.txt")
list2 = open_file_and_return_list(r"standard.txt")
maxl = max(len(list1), len(list2))
list1 += [''] * (maxl - len(list1))
list2 += [''] * (maxl - len(list2))
diff = []
diff_file = input("\nINFO: Select what to name the difference(s) : ")
open(diff_file, 'w').close()
for iline, (l1, l2) in enumerate(zip(list1, list2)):
if l1 != l2:
print(iline, l1, l2)
print(iline, l1, l2, file=open(diff_file, 'a'))
Как вы заметили, если я задаю имя файла standard.txt
и new.txt
, код выполняется безупречно, но при попытке добавить свои собственные переменные происходит сбой.