密码薄文件的增删改查

    科技2024-07-19  66

    #!/usr/bin/env python3 # -*- coding: UTF-8 -*- # author:Torry Zhang # contact: zytwell321@163.com # datetime:2020/10/7 6:17 # software: PyCharm """ 作业 2. 制作一个"密码薄",其可以存储一个网址(例如 www.itcast.cn),和一个密码(例如 123456),请编写程序完成这个“密码薄”的增删改查功能,并且实现文件存储功能 """ import os filename = "password_note.txt" # if not os.path.isfile(filename): if not os.path.exists(filename): # os.mknod(filename) # windows不支持os.mknod() os.system("type nul>{}".format(filename)) def read_lines(): """ 读取文件内容 :return:文件内容list[] """ with open(filename, "r", encoding="utf-8") as f: return f.readlines() # 返回list[] f.close() def read_all(): """ 读取文件所有内容 :return:逐行打印内容 """ i = 0 with open(filename, "r", encoding="utf-8") as f: for line in f.readlines(): i += 1 print(i, "---", line, end="") f.close() def insert_content(): """ 插入文件内容 :return: """ row1 = input("请输入网站地址:") row2 = input("请输入账号:") row3 = input("请输入密码:") with open(filename, "a", encoding="utf-8") as f: f.write("{}\t\t{}/{}".format(row1, row2, row3) + "\n") f.close() def delete_line(): """ 删除文件内容 :return: 删除整行内容或列2/列3内容 """ row_num = int(input("将删除第几行数据?")) del_line = read_lines()[row_num - 1] print("该行数据内容:", del_line) # TODO 重新write该数据,跳过 def alter_line(): """ 修改文件内容 :return: 修改整行内容或列1/2/3内容 """ # TODO 修改该行数据 pass def query_line(): """ 查看文件内容 :return:全部查看或查看某行内容 """ row_nums = len(read_lines()) selection = input("请输入查询方式:1.查看单行数据\t2.查看所有数据 >>>>>>") if selection == "1": row_num = int(input("查看第几行数据?")) if row_num > 0 and row_num <= row_nums: print("该行数据:", read_lines()[row_nums - 1]) else: print("目前只有%d行数据,请重新输入行数。" % row_nums) elif selection == "2": print("全量数据内容如下:") read_all() print("-" * 50) else: print("请输入正确的行号!") def menu(): while True: print("=" * 50) print("1.增加内容\n2.删除内容\n3.修改内容\n4.查看内容\n\n0.退出\n") option = input("请输入操作选项:") # 增加一行内容 if option == "1": insert_content() # 删除某行内容 elif option == "2": delete_line() # 修改某行内容 elif option == "3": alter_line() # 查看内容 elif option == "4": query_line() elif option == "0": print("退出当前操作!") break else: print("输入错误,请重新输入!") def main(): # 2.操作文件 menu() # 3.关闭文件 if __name__ == "__main__": main()

     

    遇到问题汇总:

    1.windos环境判断文件是否不存在,不存在则创建:

    # if not os.path.isfile(filename): if not os.path.exists(filename): # os.mknod(filename) # windows不支持os.mknod() os.system("type nul>{}".format(filename))

    2.windos创建文件,可以使用dos命令:type nul>{文件名称} 或 echo nul>{文件名称}

    但是 echo 命令会打印回显内容。

    3.执行os命令, os.system() 不需要做回传值操作,直接执行操作命令。

    os.popen() 执行操作命令的同时返回一个对象。

    >>> os.popen("type nul>{}".format(filename)) <os._wrap_close object at 0x00000276693DD248>

     

    Processed: 0.011, SQL: 8