文件

文件
#  控制文件读写内容的模式
#  大前提: tb模式均不能单独使用,必须与r/w/a之一结合使用
#  t(默认的):文本模式
#     1. 读写文件都是以字符串为单位的
#     2. 只能针对文本文件
#     3. 必须指定encoding参数
#  b:二进制模式:
#     1.读写文件都是以bytes/二进制为单位的
#     2. 可以针对所有文件
#    3 . 一定不能指定encoding参数

#  控制文件读写操作的模式
#  r(默认的):只读
#  w:只写
#  a:只追加写
open(r'C:\Users\凝雨\PycharmProjects\pythonProject\test.txt')  # r表示raw string即原生字符串,用来规避\n等转义字符
open('C:/Users/凝雨/PycharmProjects/pythonProject/test.txt')  # windows系统可以用/代替
f = open('test.txt', mode='rt', encoding='utf-8')  # 同级文件夹下可以用相对路径
print(f)  # 文件类型
res = f.read()
print(res)
f.close()  # 关闭文件
del f


# 可用用with同时打开多个文件,用逗号分隔开即可
with open('a.txt', 'r') as read_f, open('b.txt', 'w') as write_f:
    data = read_f.read()
    print(data)
    write_f.write(data)

# 在执行完子代码块后,with 会自动执行f.close()
with open('a.txt', 'w') as f:
    pass

with open('test.txt', mode='rt', encoding='utf-8') as f:
    print('第一次读'.center(10, '*'))
    res = f.read()
    print(res)
    print('第二次读'.center(10, '*'))
    res = f.read()
    print(res)

# 小练习:实现用户认证功能
inp_name = input('请输入你的名字: ').strip()  # strip去除字符串首尾空格
inp_pwd = input('请输入你的密码: ').strip()
with open(r'data_base.txt', mode='r', encoding='utf-8') as f:
    for line in f:
        # 把用户输入的名字与密码与读出内容做比对
        u, p = line.strip('\n').split(':')  # strip去除字符串首尾换行
        if inp_name == u and inp_pwd == p:
            print('登录成功')
            break
    else:
        print('账号名或者密码错误')

# w:只写模式,当文件不存在时会创建文件,当文件存在时会清空文件,文件指针位于开始位置
with open(r'test.txt', mode='w', encoding='utf-8') as f:
    f.write('哈哈hhh\n')

# a只追加写模式: 在文件不存在时会创建空文档,文件存在会将文件指针直接移动到文件末尾
with open('c.txt',mode='a',encoding='utf-8') as f:
    f.write('44444\n')
    f.write('55555\n')
# 强调 w 模式与 a 模式的异同:
# 1 相同点:在打开的文件不关闭的情况下,连续的写入,新写的内容总会跟在前写的内容之后
# 2 不同点:以 a 模式重新打开文件,不会清空原文件内容,会将文件指针直接移动到文件末尾,新写的内容永远写在最后

# 小练习:实现注册功能:
name = input('username>>>: ').strip()
pwd = input('password>>>: ').strip()
with open('db1.txt', mode='a', encoding='utf-8') as f:
    info = '%s:%s\n' % (name, pwd)
    f.write(info)

上一篇:Python-字符串


下一篇:Python|文件操作题目