文件处理
1、什么是文件
文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口
应用程序/用户
操作系统 文件
硬盘 硬盘
2、为何要用文件
存取硬盘必须使用文件
用户/应用程序可以通过文件将数据永久保存的硬盘中,即操作文件就是操作硬盘
用户/应用程序直接操作的是文件,对文件进行的所有的操作,都是在向操作系统发送系统调用,然后再由操作将其转换成具体的硬盘操作
3、如何用文件(文件处理三步骤)
f = open(文件路径,打开模式)
f.write(数据)
f.close()
应用程序/用户 文件对象/文件句柄=========》遥控器
操作系统 打开文件a.txt=======》空调
硬盘 硬盘
4、绝对路径和相对路径
绝对路径:就是无论从外部还是内部访问,都能够通过此路径找到文件夹。比较复杂,但是全面。
windows系统
C:\a\b\c\new.txt
linux系统、mac系统
/a/b/c/d.txt
因为单个\可能会出错 所以可以前缀加个e 如:file_path=r’C:\a\b\c\new.txt’
相对路径就是相对于自己的目标文件位置。比较简便,有局限性
比如a.py跟d.txt同层在相同文件夹 就可以直接用 d.txt
文件的打开模式
1、控制文件读写操作的模式rwa
1.1 r只读模式
在文件不存在时则报错,文件存在时文件指针跳到文件开头
# 创建一个文本 内容为'123abc你好'
f = open('/Users/Desktop/pycharm_space/aaa.txt', mode='rt', encoding='utf-8')
res = f.read()
# f.write('123') # 报错 不能写
print(res) # 123abc你好
print(f.readable()) # 判断是否可读 # True
print(f.writable()) # 判断是否可写 # False
f.close()
1.2 w只写模式
在文件不存在时则创建空文件,文件存在时则清空并重新创建,文件指针跳到文件开头
f = open('b.txt', mode='wt', encoding='utf-8')
f.write("hello2\n")
f.close()
1.3 a只追加写模式
在文件不存在时则创建空文件,文件存在时也不会清空,文件指针跳到文件末尾
f.txt=open('c.txt',mode='at',encoding='utf-8')
f.txt.write("jason:777\n")
f.txt.write("jjj:666\n")
f.txt.close()
1.4 +必须与rwa联用:r+、w+、a+
+可以让文件既可以读也可以写
1.5 总结:w与a的异同
相同点:在打开了文件不关闭的情况下,连续地写入,新的内容永远跟在老内容之后
不同点:重新打开文件,w会清空老的内容,而a模式会保留老的内容并且指针跳到文件末尾
1.6 应用:用文件注册登录
# 应用
注册部分(只有注册重复,还未加功能)
user_login = input('输入注册账号:').strip()
user_password = input('输入注册密码:').strip()
with open('user.txt', mode='r+t', encoding='utf-8') as f:
for line1 in f:
old_user,old_password = line1.strip('\n').split(':')
if user_login == old_user:
print('用户已经存在')
break
else:
login = user_login + ':' + user_password + '\n'
f.write(login)
登录部分(还未加功能)
tag=True
while tag:
inp_name = input('输入登录账号:').strip()
inpp_pwd = input('输入登录密码:').strip()
with open('user.txt', mode='rt', encoding='utf-8') as f2:
for line2 in f2:
old_user, old_password = line2.strip('\n').split(':')
if inp_name <