Python处理电视节目列表代码运行无输出问题求助
代码错误排查
- main函数未调用
read_file()方法读取文件生成字典,直接使用未定义的dict1变量,程序直接报错终止,自然没有输出 read_file()方法中存在变量名错误:if file[i].strip() == ''中的file是循环的数值索引,不是读取的文件内容列表,且i未定义,应该修改为if file1[file].strip() == ''output_titles()方法中打开文件时使用了未定义的变量file,应该使用参数传入的文件名变量- 调用
output_keys和output_titles时参数传反:两个函数定义的第一个参数是输出文件名,第二个是存储数据的字典,原代码调用时把字典放在了第一个参数位置 output_keys()方法写文件时没有添加换行符,会导致所有输出内容挤在同一行,不符合格式要求main()方法中的if dict1 is None判断逻辑无效,应该在调用read_file()读取文件后再判断是否读取成功,建议添加异常捕获处理文件名无效的场景
修正后完整代码
def read_file(input_file): dict1 = {} try: with open(input_file, 'r', encoding='utf-8') as f: content = f.readlines() for idx in range(0, len(content)-1, 2): if content[idx].strip() == '': continue count = int(content[idx].strip()) show = content[idx + 1].strip() if count in dict1: dict1[count].append(show) else: dict1[count] = [show] return dict1 except: return None def output_keys(output_file, dict1): with open(output_file, 'w+', encoding='utf-8') as q: for key in sorted(dict1.keys()): line = "{}: {}\n".format(key, '; '.join(dict1[key])) q.write(line) print(line.strip()) def output_titles(output_file, dict1): titles = [] for show_list in dict1.values(): titles.extend(show_list) with open(output_file, 'w+', encoding='utf-8') as o: for title in sorted(titles): o.write("{}\n".format(title)) print(title) def main(input_file): dict1 = read_file(input_file) if dict1 is None: print('Error: Invalid file name provided: {}'.format(input_file)) return output_filename1 = 'output_keys.txt' output_filename2 = 'output_titles.txt' output_keys(output_filename1, dict1) output_titles(output_filename2, dict1) file_name = input() main(file_name)
内容的提问来源于stack exchange,提问作者Cali_2021
相关产品推荐
相关产品推荐

