自学python之路(day5)

时间:2022-06-15 03:27:30
一、文件操作
1. 只读
1) r
以str形式
f = open('d:\文件操作.txt',mode='r',encoding='utf-8') # r是默认的
content=f.read()
print(content,type(content))
f.close()
2) rb  
#b 表示以bytes形式(bytes类型是以字节为单位处理的,非文字文件上传下载)
f = open('d:\文件操作.txt',mode='rb')
content=f.read()
print(content)
f.close()
2. 只写
# 没有文件就创建文件去写,有源文件将源文件内容覆盖
1) w
#
str形式
f = open('log',mode='w',encoding='utf-8')
f.write('恢复')
f.close()
2) wb  
#以bytes形式(bytes类型是以字节为单位处理的,非文字文件上传下载)
f = open('log',mode='wb')
f.write('粉红色'.encode('utf-8'))
f.close()
3. 追加
1) a
f = open('log',mode='a',encoding='utf-8')
f.write('哈喽')
f.close()
2) ab
f = open('log',mode='ab',) # b 表示以bytes形式(bytes类型是以字节为单位处理的,非文字文件上传下载)
f.write('哈喽哈喽'.encode('utf-8'))
f.close()
4. 先读后写
1) r+
最常用
f = open('log',mode='r+',encoding='utf-8')
print(f.read())
f.write('哈喽哈喽')
f.close()

 2) r+b 以bytes的形式

f = open('log',mode='r+b')
print(f.read())
f.write('哈喽哈喽'.encode('utf-8'))
f.close()
5. 先写后读
1) w+
先把原内容清除,再去写
f = open('log',mode='w+',encoding='utf-8')
f.write('哈喽哈喽')
f.seek(0)  #读光标
print(f.read())
f.close()
2) w+b 
以bytes的形式(bytes类型是以字节为单位处理的)
f = open('log',mode='w+b')
f.write('哈喽哈喽'.encode('utf-8'))
f.seek(0)
print(f.read())
f.close()

  6.  追加后读

1) a+
f = open('log',mode='a+',encoding='utf-8')
f.write('哈喽哈喽')
f.seek(0)  #读光标
print(f.read())
f.close()
2) a+b
f = open('log',mode='a+b')
f.write('哈喽哈喽'.encode('utf-8'))
f.seek(0)  #读光标
print(f.read())
f.close()

二、练习题

用户登录,三次机会

username=input('请输入用户名:')
password=input('请输入密码:')
info_list=[]
with open('user_info',mode='w',encoding='utf-8') as f:
    f.write('{}\n{}'.format(username,password))
i=0
while i<3:
    usn=input('请输入用户名:')
    pwd=input('请输入密码:')
    with open('user_info',mode='r+',encoding='utf-8') as f1:
        for info in f1:
            info_list.append(info)
    if usn == info_list[0].strip() and pwd == info_list[1].strip():
        print('登陆成功!')
        break
    else:
        print('账号或密码错误!')
    i+=1