The problem is more one of viewpoint, not coding. You want to get away from the word processing mentality. There is no such thing as lines in a document in a folder (unless the programmer first creates them). We have data (bytes) in two files that we can use or order in any way we want. You want to use the longest file as the primary file and couple that with the records in the shorter file, as far as they will go anyway. Eliminating all of the other code in your program, which is difficult to decipher because there is no explanation of anything anywhere, we could use something like the following.
## simulate reading a file with readlines()
hotel_txt_list = [ "Best Western\n",
"Holiday Inn" ]
res_txt_list = [ "Denny's\n",
"Applebee's\n",
"IHOP\n",
"Black Angus" ]
## find the longest list and use it as the primary list
first_list = []
second_list = []
if len(hotel_txt_list) > len(res_txt_list):
first_list = hotel_txt_list ## this is a reference, not a copy
second_list = res_txt_list
else:
first_list = res_txt_list
second_list = hotel_txt_list
## loop through all of the records of the longest list and match
## them to the records of the shorter list
stop_2 = len(second_list)
for ctr, rec in enumerate(first_list):
if ctr < stop_2: ## matching record found in 2nd list
print "%-20s" % (second_list[ctr].strip()),
else:
print "No matching record ",
print first_list[ctr].strip()