Python 文件操作相关函数

文件操作函数

open()打开文件

格式 :open(文件的路径, 打开的方式,[字符集])

文件的路径

参数1: 文件路径 路径 url 统一资源定位符

相对路径:当前python文件所在的目录下(默认目录)
1.txt ==> ./1.txt 是同一个位置
./ 代表当前目录 …/ 代表上级目录
j绝对路径:
Windows:C:/user/appdata/1.txt 从磁盘根目录开始
Lniux: /users/home/username/file.xxx

1. 打开文件

注意打开的方式
普通模式
+ “r” 以读方式打开,只能读文件 , 如果文件不存在,会发生异常
+ “w” 以写方式打开,只能写文件, 如果文件不存在,创建该文件,如果文件存在则打开文件并清空文件文件位于文件开头
+ "x"异或模式,文件如果不存在就创建文件, 文件已存在则报错 ==> 防止覆盖
+ “a” 追加模式,文件不存在则创建文件,如果存在则打开文件(与‘w’模式不同不会清空文件)且文件指针位于文件末尾
拓展模式
+ b b模式 bytes 二进制
+ +模式 plus 可读可写
组合模式
‘rb’ 以只读的方式打开为二进制文件
’wb‘ 清空文件之后写入二进制文件
’xb‘ 也是操作二进制文件
’ab‘ 追加二进制文件
同理也有 ‘r+’, ‘w+’, ‘x+’, ‘a+’

     fp  = open('./1.txt', 'r',encoding='utf-8')  
 注意对文件操作完成后随即关闭文件(避免占用内存进程一直进行) 
    fp.close()

2. 读取文件内容

注意该文件必须存在否则报错

fp.seek(2)  # 设置文件指针起始位置
res = fp.read()   # 返回文件内容并输出(从当前的位置开始读取文件到末尾) 可指定读取指定的字节
# res = fp.read(10)  # 读取十个字节
res = fp.readline()  # 读取一行数据 
res = fp.readlines()  # 读取所有行数据
print(res)

3. 向文件写入内容

使用文件对象,调用write()方法写入内容

fp.write('something you want write')   # 写入你想写入文件的内容 只能写入字符串类型
fp.writelines()   # 写入一行数据

4. 文件操作的高级写法

# with open(文件路径,打开模式) as 变量:
#	变量.操作()
# 上面写法的优点是不用每次单独去写关闭文件了
# 注意组合模式下文件指针的位置
with open('./1.txt', 'r+',encoding='utf-8') as fp:   # 以可读可写的方式打开文件
res = fp.read()  # 读取文件内容并输出
print(res)

使用数据写入的方式,完成一个注册和登录的程序

  1. 用户输入用户名和密码以及确认密码
  2. 用户名不能重复
  3. 两次密码要一致
  4. 可以用已经注册的账户登录
  5. 密码如果错误三次则账户锁定不能继续登录
"""
代码仅供参考,如有不合理处欢迎指正!!!
这里只是提供简单的实现方式,还有很多优化之处,希望大家自己尝试
"""


def practice_file():

    def hello():
        # 设计一个函数每次调用显示登陆页面
        print("Welcome to log in LingYun user management system!")
        print('*' + '=' * 47 + '*')
        print("*" + " " * 21 + '0 注册' + ' ' * 21 + "*")
        print("*" + " " * 21 + '1 登录' + ' ' * 21 + "*")
        print("*" + " " * 21 + '2 退出' + ' ' * 21 + "*")
        print('*' + '=' * 47 + '*')

    def save_file(temp_data):
        with open("user.txt", "w") as rp:
            for data in temp_data:
                rp.writelines(data + '=' + temp_data[data])
                rp.write("\n")

    temp_data = {}
    # read existing user from txt
    with open("user.txt", "r") as fp:
        lines = fp.readlines()
        if lines is not None:
            for line in lines:
                line = line.strip('\n')
                temp = line.split('=')          # 以 ‘=’ 字符区分用户名和密码
                temp_data[temp[0]] = temp[1]

    password_data = {}
    with open("password.txt", "r+") as pp:
        lines = pp.readlines()
        if lines is not None:
            for line in lines:
                line = line.strip('\n')
                temp = line.split('=')          # 以 ‘=’ 字符区分用户名和密码
                password_data[temp[0]] = temp[1]
    # print(temp_data)    # test use
    while 1:

        hello()
        # get user input
        keyboard = input("Please enter the option you want to select (0 or 1): ")

        # determine whether user input is correct or incorrect
        if keyboard != '0' and keyboard != '1' and keyboard != '2':
            print("Please re-enter(only support numbers): ")
        elif keyboard == '0' or keyboard == '1':

            # registered user
            if keyboard == '0':
                user = input("Please enter the username you want create:")
                while 1:
                    if user in temp_data:
                        print("The user already exits, please change one.")
                        user = input("Please enter the username you want create:")
                    else:
                        break
                password1 = input("Please input thr user's password: ")
                password2 = input("Confirm your password:")
                while password1 != password2:
                    password1 = input("the two passwords are different, enter them again: ")
                    password2 = input("Confirm your password:")
                temp_data.update({user: password1})
                print("The user {} has been created.".format(user))
                save_file(temp_data)
                print(temp_data)

            # login user
            else:
                index = 0
                while 1:
                    user_d = input("Please enter your username: ")
                    user_password = input("Please enter {}'s password: ".format(user_d))
                    if user_d in password_data:
                        if password_data[user_d] == 3:
                            print("Your account has been locked. Please contact your administrator")
                            break
                    elif user_d not in temp_data:
                        print("The user name or password is incorrect, please try again.")
                        break
                    elif temp_data[user_d] == int(user_password):
                        print("Congratulations on your login!")
                    else:
                        print("The user name or password is incorrect, please try again.")
                        index += 1
                        if index == 3:
                            password_data[user_d] = 3
                            save_file(password_data)
                            break
        # break plight
        else:
            print("Thanks for using!")
            break


if __name__ == "__main__":
    practice_file()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值