一、文件基本概念
1、文件定义:操作系统提供给用户或者应用程序操作硬盘的一种虚拟概念(接口)
2、为何要有文件:用户或应用程序可以通过文件将数据永久保存在硬盘中,操作文件就是操作硬盘(用户或者应用程序直接操作的是文件,对文件进行的所有操作,都是在向操作系统发送系统调用,然后再由操作系统将其转换成具体的硬盘操作)
3、如何用文件:open()
模式:(1)控制文件读写内容的模式:t(文本模式),b(二进制/bytes)
但是他们不能单独使用,必须要和r/w/a连用
t(文本,默认的模式)
1、读写都是以str(unicode)为单位的
2、文本文件
3、必须指定encoding='utf-8'
(2)控制文件读写操作的模式:
r:只读模式
w:只写模式
a:只追加写模式
+:r+ w+ a+
二、文件基本操作
1、打开文件
打开一个文件会从当前文件夹找
(对于Windows中出现的路径分隔符,推荐使用open(r'C:\a\b\c\d.txt')前面加个r,或是 open('C:/a/b/c/d.txt')全部使用/)
使用open()有返回值<_io.TextIONrapper···>
对于x=int(10)只占用应用程序空间,但是open()既占用应用程序空间,又占用操作系统时间,因为会向操作系统发送请求
对于文件的操作:应用程序对于文件的读写请求都是在向操作系统发出系统调用,然后由操作系统控制硬盘把输入读入内存,或者写入硬盘。
2、文件名.read()默认使用的模式是rt
3、文件名.close(),之后便不能再读取此文件了,要记得关闭
4、with open('文件名',mode=' ') as 新名字:之后便可以使用新名字.read()即为读取文件,子代码执行后会直接执行f.close()
5、同时打开几个文件需要换行时with open('文件名',mode=' ') as 新名字1,\
with open('文件名',mode=' ') as 新名字2:
三、模式详解
1、t文本
1、读写都以str(unicode)为单位
2、文本文件
3、必须指定encoding='utf-8'(如果没有指定encoding参数,操作系统会使用自己默认的编码,linux是utf-8,windows是gbk)
4、(补充)内存:utf-8格式的二进制解码成unicode
硬盘:utf-8格式的二进制
2、r模式
1、默认的操作模式:只读模式,当文件不存在时报错,当文件存在时,文件指针跳到开始位置
with open('c.txt',mode='rt',encoding='utf-8') as f:
3、a模式
1、只追加写,在文件不存在时会创建空文档,在文件存在时,文件指针会直接调到末尾
4、比较w与a
1、相同点:在打开的文件不关闭的情况下,连续的写入,新写的内容总是会跟在以前写的内容之后
2、不同点:以a模式重新打开文件,不会清空原文件内容,会将文件指针直接移动到文件末尾
此处有实例:1、在文件中保存账号密码1.0版本

附加:读出user.txt文件夹中的东西

2、2.0版本,可以一直验证,直到输对了为止

坏处就是如果出错了,就会一直循环出现文件行个数个错误

3、注册功能
