def add_line(): # 添加线路的函数 file_path = 'D:\公交查询系统\line_info.pkl' a = input('请输入添加的线路:').strip() b = input('请输入经过的站点:') d = { a: {b} } if os.path.exists(file_path) and os.path.getsize(file_path): if check_add_line(a): print('您要添加的线路已经存在了......') else: with open('line_info.pkl', 'ab') as f: pickle.dump(d, f) print('您已经添加线路成功!!') else: with open('line_info.pkl', 'wb') as fp: pickle.dump(d, fp) print('您已经添加线路成功了!!')
时间: 2024-04-26 11:22:50 浏览: 5
这是一个 Python 函数,名为 `add_line()`,用于添加公交线路。
函数的第一行是函数定义,其中 `def` 是 Python 中定义函数的关键字,`add_line()` 是函数的名称,括号内没有参数,冒号表示函数定义的结束。
函数体内第二行定义了一个字符串变量 `file_path`,表示存储线路信息的文件路径。第三行使用 `input()` 函数获取用户输入的线路号,使用 `strip()` 方法去除输入文本中的空白字符。第四行使用 `input()` 函数获取用户输入的经过站点。第五行创建了一个字典 `d`,将线路号作为键,经过站点作为值,将其存储在字典中。
接下来的判断语句检查文件是否存在且大小是否大于 0。如果文件存在且不为空,将调用 `check_add_line()` 函数检查是否已经存在该线路。如果线路已经存在,则输出一条错误提示信息;否则,使用 `with` 语句打开文件,使用 `pickle.dump()` 函数将字典 `d` 序列化并存储到文件中,输出一条成功提示信息。
如果文件不存在或者大小为 0,则使用 `with` 语句创建新的文件,并将字典 `d` 序列化并存储到文件中,输出一条成功提示信息。
需要注意的是,函数体内使用了 `os.path` 模块中的函数来判断文件是否存在以及大小是否为 0。同时,函数中使用了 `pickle` 模块来序列化和反序列化 Python 对象,将其存储到文件中。
相关问题
def revise_line(): # 定义修改线路的函数 num = input('请输入您要修改的线路:').strip() if check_add_line(num): show_line_all() tag = input('请确认是否继续修改线路:(1为是,0为否)\n') if tag == '1': file_path = 'D:\公交查询系统\line_info.pkl' a = input('请再次输入要修改的线路:').strip() clear_line(a) b = input('请输入经过的站点:') d = { a: {b} } if os.path.exists(file_path) and os.path.getsize(file_path): with open('line_info.pkl', 'ab') as f: pickle.dump(d, f) print('您已经修改线路成功!!') else: with open('line_info.pkl', 'wb') as fp: pickle.dump(d, fp) print("您已经修改线路成功了!!!!") else: print('您要修改的线路不存在,需要创建一个新的线路。。。') add_line()
这是一个名为 `revise_line()` 的函数,它的作用是修改地铁线路信息。在这个函数中,会要求用户输入要修改的线路名称,并检查该线路是否存在。如果该线路存在,则会输出该线路经过的站点,并要求用户确认是否要继续修改该线路。
如果用户确认要修改该线路,则会要求用户重新输入线路名称,并清空该线路的所有信息。然后,会要求用户输入该线路经过的站点,并将其保存到文件 `line_info.pkl` 中。如果该文件已经存在并且不为空,则会在文件的末尾添加新的线路信息。
如果用户要修改的线路不存在,则会输出提示信息,并调用函数 `add_line()` 来创建一个新的线路。
def check_add_line(num): # 检查添加线路是否存在的函数 with open('line_info.pkl', 'rb') as fp: while True: try: data = pickle.load(fp) # 遍历字典 for key, value in data.items(): if num in key: return True except: break
这是一个 Python 函数,名为 `check_add_line()`,用于检查添加线路是否存在。
函数的第一行是函数定义,其中 `def` 是 Python 中定义函数的关键字,`check_add_line(num)` 是函数的名称,括号内有一个参数 `num`,表示需要检查的线路号,冒号表示函数定义的结束。
函数体内第一行使用 `with` 语句打开了一个名为 `line_info.pkl` 的文件,并使用 `rb` 模式读取文件内容。`pickle.load(fp)` 将文件内容反序列化为 Python 对象并返回,如果文件已经读取完毕,则会抛出 `EOFError` 异常,此时程序将跳出循环并执行函数体内的最后一行。
在循环中,程序通过遍历字典 `data` 中的所有元素,判断参数 `num` 是否在字典的键中出现,如果存在,则返回 `True`,表示该线路已经存在;否则,继续遍历,直到字典中的所有元素都被遍历完毕,或者找到了匹配的线路号。
需要注意的是,函数体内使用了 `try...except` 语句,这是为了避免在遍历字典时出现异常导致程序崩溃,因为字典中的元素数目是不确定的,有可能会出现异常。