标签:文本编辑 with 产生 使用 调整 wrap 系统调用 dos 变量
一、文件的定义:文件是操作系统提供给用户或者应用程序的一种虚拟的概念,也可以说是一种接口或功能。
二、为什么要用文件:用户/应用程序可以通过操作文件进而控制硬盘将数据永久保存其中。文件是操作系统提供的一种功能,用户/操作系统操作文件时,其实就是在向操作系统申请系统调用,再用操作系统转转为具体的硬盘操作指令。
三、文件使用open的模式
1、控制文件读写内容的两种模式 t 和 b :
① t :文本文件的模式,也是默认模式,读写都以str(unicode格式)为单位。
②Bytes:二进制模式。
2、控制文件读写操作的模式:
① r :只读模式。
② w:只写模式。
③ a :只追加写模式。
④ r+ :读模式下兼容写。
⑤ w+ :写模式下兼容读。
⑥ a+ :追加写模式下兼容读。
3、强调:t 和 b 不能单独使用,必须和 r/w/a/r+/w+/a+ 连用。
四、文件基本操作
1、打开文件:open(文件路径)。
①在windows系统中的特别说明:此系统中的文件路径会以文件夹名+正斜杠的形式,这在python中有些会被识别位特殊功能,为避免这种情况,有两种解决方案。
Ⅰ:在文件路径的左侧引号外加一个 r ,即表示将引号内的全部内容标记为只读字符,不识别含义。此方法较为推荐。
Ⅱ:可以将文件路径的正斜杠改写为反斜杠,python解释器识别时会自动调整。
open(‘C:\ddd.txt\nb\c\d.txt‘) # 这其中的\n会被python语法识别为转译符 open(r‘C:\ddd.txt\nb\c\d.txt‘) # 解决方案一,推荐使用 open(‘C:/ddd.txt/nb/c/d.txt‘) # 解决方案二
②打开文件的操作会产生某种数据类型的值,占用应用程序的内存空间。
a = open(r‘E:\python之路\01 课程\week02-day05\作业专用\0001.txt‘) print(a, type(a)) # 此处类型结果为 _io.TextIOWrapper
2、操作文件:就是读或写的操作,应用程序对文件的读写请求都是在向操作系统发送调用申请,然后由操作系统通过cpu控制硬盘把输入读入内存,或存入硬盘。以读为例:
a = open(r‘E:\python之路\01 课程\week02-day05\作业专用\0001.txt‘) # 该文件事先编辑了内容为:is 0001 b = a.read() print(b) # 结果为 is 0001
3、关闭文件:作用是为了回收操作系统的内存资源。
a = open(r‘E:\python之路\01 课程\week02-day05\作业专用\0001.txt‘) b = a.read() print(b) a.close() # 关闭文件,回收操作系统资源 del a # 变量 a 依然存在,但是不能再读了,理应删除以回收应用程序资源,但是因为其占用空间微乎其微,此步可忽略不做
4、文件对象操作,又称文件句柄:with.......as,使用此功能运行完会自动关闭文件。
with open(r‘E:\python之路\01 课程\week02-day05\作业专用\0001.txt‘, mode=‘rt‘)as a1, open(r‘E:\python之路\01 课程\week02-day05\作业专用\0002.txt‘, mode=‘rt‘)as a2: # with后面可以接多个open,以 , 隔开,还可以 \ 换行 b1 = a1.read() b2 = a2.read() print(b1) # 结果为 is 0001 print(b2) # 结果为 is 0002 print(a1.read()) # with as 结束后,文件自动关闭,所以此步会报错
5、指定字符编码:没有指定encoding参数操作系统会使用自己的模式编码,例如linux使用utf-8,windos使用GBK。
①以windows为例,若文件中有中文,因为文本编辑器编辑此文本时是以utf-8存入硬盘,我们需要操作这个文件的时候,若用操作系统默认的GBK码从硬盘解码出来的话,会因为存取码不对应而产生乱码,要解决此问题需要使用encoding功能指定解码表。
with open(r‘E:\python之路\01 课程\week02-day05\作业专用\0003 中文文件.txt‘, mode=‘rt‘, encoding=‘utf-8‘) as a3: b3 = a3.read() print(b3) # 结果为 这是 0003 中文文件
五、文件操作模式详解
1、r 模式(默认模式):只读模式,当文件不存在时则报错,当文件存在时指针会跳到开始位置。
标签:文本编辑 with 产生 使用 调整 wrap 系统调用 dos 变量
原文地址:https://www.cnblogs.com/caoyu080202201/p/12488087.html