文件的基本操作
1.什么是文件?
操作系统暴露给用户操作硬盘的接口
2.如何操作文件?
三步骤:
1.使用open打开文件
2.使用相关方法操作文件
3.关闭文件
# 1.打开文件(由操作系统打开)
f = open('a.txt', 'r', encoding='utf-8')
# 2.读取文件内容
print(f.read())
# 3.关闭文件
f.close()
'''
当路径写成绝对路径时候,路径中有斜杠出现时候,在路径前面加个r
r'E:\python21\day10\a.txt'
'''
# 为了不想每次手动关闭文件,python提供了一个简便方法
# with上下文管理器
with open(r'a.txt', 'r', encoding='utf-8') as f:
···
当with代码块中代码执行完毕,会自动执行f.close()
文件的读、写和追加模式
1. r: read (读)
2. w:write (写)
3. a:append (追加)
######################### read ######################################################
1. 路径不存在,会报错
with open('b.txt', mode='r', encoding='utf-8', ) as f:
pass
2.路径存在直接读取,模式指定r,不能向文件中写内容
with open('a.txt', mode='r', encoding='utf-8', ) as f:
pass
######################### write #####################################################
如果路径不存在,会创建出来一个新的路径(相当于创建了一个新的文件)
with open('b.txt', mode='w', encoding='utf-8', ) as f:
pass
'''如果路径存在,1. 会把文件内容清空,2. 在执行写操作'''
with open('a.txt', mode='w', encoding='utf-8', ) as f:
f.write('aaaaa')
######################## append #######################################################
a:append(追加)
路径不存在,会创建出来一个新的路径
a:在文件里的末尾添加新内容
with open('a.txt', mode='a', encoding='utf-8', ) as f:
f.write('bbbbbb')
文件的相关操作方法
1. 读相关的方法
with open('a.txt', 'r', encoding='utf-8') as f:
print(f.read())
print(f.readable()) # 查看文件是否可读
print(f.readline()) # 逐行读取文件
print(f.readlines()) # 把文件中的每一行当成一个元素放在了列表中
# 2. 写相关的方法
with open('a.txt', 'w', encoding='utf-8') as f:
# f.write('aaaaaa\n')
# print(f.writable())
# print(f.readable())
# f.writelines(['aaa\n', 'bbbb\n', 'cccc', 'ddddd'])
pass
文件优化操作
with open('a.txt', 'r', encoding='utf-8') as f1:
print(f.read()) # 因为是直接读取全部内容,如果文件内容很大,就容易造成内存爆满
'''
容易造成内存爆满
如何解决上述问题?
逐行读取内容
'''
# for line in f1:
# print(line) # 一行一行读取
# f1.flush() # 把内存中的数据立刻刷新到硬盘中
pass
多用户注册和登录功能
while True:
print("""
1.注册用户
2.登陆用户
3.查看用户
4.退出系统
""")
choice = input('请输入想要执行操作的编号:').strip()
if choice == '1':
name = input('请输入用户名:').strip()
pwd = input('请输入密码:').strip()
if name == 'q':
break
date = '%s|%s\n' % (name, pwd)
with open('a.txt', 'r', encoding='utf-8') as file:
for line in file:
real_name, real_pwd = line.split('|')
if name == real_name:
print('用户名已存在')
break
else:
with open('a.txt', 'a', encoding='utf-8') as file1:
file1.write(date)
print('用户已添加')
elif choice == '2':
name = input('请输入用户名:').strip()
pwd = input('请输入密码:').strip()
with open('a.txt', 'r', encoding='utf-8') as file1:
for line in file1:
real_name, real_pwd = line.split('|')
if name == real_name and pwd == real_pwd.strip('\n'):
print('登陆成功')
break
else:
print('用户名或密码输入错误')
elif choice == '3':
with open('a.txt', 'r', encoding='utf-8') as file2:
for line in file2:
real_name, real_pwd = line.split('|')
print(real_name)
elif choice == '4':
print('已退出系统')
break
else:
print('请输入想要执行操作的编号:')