相对路径和绝对路径python
在编程中,建议使用相对路径编程
操做文件的两种方法工具
open学习
语法:f = open('文件名路径',mode,encoding)
,用于打开文件。编码
文件路径:建议使用相对路径操作系统
mode:打开文件的模式,有三种,分别是:r
、w
、a
。通常和处理文件的两个模式套用。指针
处理文件的两种模式是:t
和 b
。code
encoding:打开文件,操做文件内容的编码设置对象
# 第一种打开方式,这种打开方式,必须使用f.close()来关闭系统资源 f = open("a.txt","r",encoding="utf-8") data = f.read() # 读取a.txt 文件中的所有内容 print(data) # 打印文件中的内容 f.close() # 关闭操做系统资源
模式 | 描述 | 特色 |
---|---|---|
rt | 默认模式,可简写为 r 。以文本文件且只读的模式打开文件 |
若是文件不存在,报错 |
wt | 可简写为 w 。以文本文件且只写模式打开文件 |
若是文件不存在,建立一个新文件;若是文件中存在数据,重写文件中的内容 |
at | 可简写为 a ,以文本文件且只写模式打开文件 |
若是文件不存在,建立一个新文件;若是文件中存在数据,在数据后追加内容。 |
rb | 以二进制字符且只读的模式打开文件 | 若是文件不存在,报错 |
wb | 以二进制字符且只写的模式打开文件 | 若是文件不存在,建立一个新文件;若是文件中存在数据,重写文件中的内容 |
ab | 以二进制字符且只写的模式打开文件 | 若是文件不存在,建立一个新文件;若是文件中存在数据,在数据后追加内容。 |
with open() as …:blog
语法:with open("文件名路径",mode,encoding)as f:
建议使用这种方式对文件进行操做,上下文关联打开文件。优势:不只会自动回收系统资源,且能够同时打开多模式下的同一文件或多个文件。
# 第二种打开方式,上下文关联方式,会自动关闭系统资源,建议使用这种方式 with open("a.txt","r",encoding="utf-8") as f: data = f.read() print(data) # 同时打开多个文件,用逗号分隔开 with open("a.txt","r",encoding="utf-8")as rf,\ open("b.txt","w",encoding="utf-8") as wf: data = f.read() wf.write(data)
文件处理的内置方法
# a.txt 文件中的内容 姓名:sean 年龄:18 性别:男 描述:上海校区最帅的人
读
语法 | 说明 |
---|---|
f.read() | 默认一次性读取出全部的文件内容;参数根据mode的模式,若是是 t ,读取文件的字符个数;若是是 b ,读取文件的字节数 |
f.readline() | 一次只能读取一行内容 |
f.readlines() | 将数据所有读入内存中,以换行符分隔存入列表中 |
f.readable() | 判断文件是否可读,返回布尔值 |
# 模式为:只读文本模式,r=rt 是read text with open("a.txt","r",encoding="utf-8") as f: print(f.readable()) # 打印结果为:True print(f.readline()) # 打印结果为:姓名:sean print(f.readlines()) # 打印结果为:列表['年龄:18\n', '性别:男\n', '描述:上海校区最自恋的人'] f.seek(0,0) # 将光标移动到文件的开始 print(f.read()) # 打印结果为:全部的内容
# 模式为:只读字节模式,rb 是read bytes。注意:使用字节模式,encoding参数不可用 with open("c.txt","rb") as f: print(f"readable的结果:{f.readable()}") # 打印结果:True print(f"read的结果:{f.read()}") # 打印结果:文件全部内容的二进制字节 f.seek(0,0) # 将光标移动到文件的开始 print(f"readline的结果:{f.readline()}") # 打印结果:文件内容第一行记录的二进制字节 f.seek(0,0) print(f"readline的结果:{f.readlines()}") # 打印结果:列表形式的二进制字节
打印结果:
写
语法 | 说明 |
---|---|
f.write() | 将数据写入文件 |
f.writelines | 将可迭代对象的元素以字符串形式写入文件。等价于for+write() |
f.writeable | 判断文件是否可写,返回布尔值 |
# 只写文本模式,将文件中的原内容清空,重写了新的内容 with open(r"a.txt","w",encoding="utf-8") as wf: print(f"是否可读:{wf.readable()}") print(f"是否可写:{wf.writable()}") wf.write("这是使用write新写入的内容\n") wf.writelines(["这是使用writelines新写入的内容1\n","这是使用writelines新写入的内容2\n","这是使用writelines新写入的内容3\n"]) # 列表中的内容会拼接起来写入文件中 # 验证是否将内容写入到a.txt 文件中 with open(r"a.txt","r",encoding="utf-8") as rf: print(rf.read())
操做结果
# 追加文本模式,保留文件中原来的内容,并在后面追加新的数据 with open(r"a.txt","a",encoding="utf-8") as af: print(f"是否可读:{af.readable()}") print(f"是否可写:{af.writable()}") af.write("这是使用追加模式write写入的内容\n") af.writelines(["这是使用追加模式writelines新写入的内容1\n","这是使用追加模式writelines新写入的内容2\n","这是使用追加模式writelines新写入的内容3\n"]) # 验证是否将内容写入到a.txt 文件中 with open(r"a.txt","r",encoding="utf-8") as rf: print(rf.read())
操做结果
光标(指针)的操做
语法 | 描述 |
---|---|
f.seek(offset,whence) | offsetf:相对偏移度,也就是光标移动的位数,针对的是字节; whence:用于指定光标位置从哪里开始。 值只能是:0(文件开头),1(当前位置),2(文件末尾)。 |
f.tell() | 光标所在的位置 |
3bytes
,英文字符占1bytes
2bytes
,英文字符占1bytes
#### 扩展
咱们学习的读取文件 r
、w
、a
是纯净模式,还有 r+
、w+
、a+
模式。这三种模式设置成了可读可写模式,其余特性跟纯净模式是同样的。