Python菜单调用函数失效:小型银行应用文件读取函数异常
解决你的Python银行应用:parse_in函数单独正常但菜单调用失效的问题
嘿,我碰到过好几次这种“单独跑没问题,集成就拉胯”的情况,咱们一步步来排查:
最可能的元凶:文件路径不对
你单独测试parse_in()的时候,脚本的工作目录肯定和bank.txt在一块儿,但当你从菜单函数调用它时,程序的工作目录说不定变了!比如你可能是从另一个文件夹启动的菜单脚本,导致找不到文件。
修复办法:用脚本的绝对路径来定位文件,这样不管在哪运行都能找到:
import os def parse_in(): # 获取当前脚本所在的文件夹路径 script_folder = os.path.dirname(os.path.abspath(__file__)) # 拼接出bank.txt的完整路径 file_path = os.path.join(script_folder, "bank.txt") with open(file_path, 'r') as details: lines = details.read().splitlines() return lines
检查菜单里的调用逻辑
你给的菜单片段里没看到调用parse_in()的代码,会不会是你在菜单选项分支里调用时出错了?比如没接返回值,或者调用位置不对?举个正确的调用例子:
def menu(): print("Please selected one of the options" + "\n\t1: 查看账户信息") choice = input("输入选项编号:") if choice == "1": # 调用parse_in并拿到返回的内容 account_data = parse_in() # 一定要对返回的数据做处理,比如打印出来 print("账户信息:", account_data)
要是调用后没做任何操作,你自然感觉不到它在工作😂
加个异常捕获,揪出隐藏错误
有时候可能是权限问题或者文件意外损坏,单独测试时没触发,但菜单运行时出问题了。给parse_in()加个异常捕获,就能看到具体错误:
def parse_in(): try: with open('bank.txt', 'r') as details: lines = details.read().splitlines() return lines except Exception as e: print(f"读取文件时出错啦:{e}") return []
这样调用时就能直接看到是文件不存在、权限不够还是别的问题。
快速排查小技巧
- 在菜单里先打印当前工作目录,确认文件位置对不对:
import os def menu(): print("当前工作目录:", os.getcwd()) # 其他菜单代码... - 调用
parse_in()后立刻打印返回值,看看是不是拿到了空列表或者报错。
内容的提问来源于stack exchange,提问作者Krychaz
相关产品推荐
相关产品推荐

