密码薄文件的增删改查

#!/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>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值