文件打开模式
打开模式 | 执行操作 |
---|---|
‘r’ | 以只读的方式打开文件 (默认) |
‘w’ | 以写入的方式打开文件, 会覆盖已存在的文件 |
‘x’ | 如果文件已经存在, 使用此模式打开将引发异常 |
‘a’ | 以写入模式打开, 如果文件存在, 则在末尾追加写入 |
‘b’ | 以二进制模式打开文件 |
‘t’ | 以文本模式打开 (默认) |
‘+’ | 可读可写模式 (可添加到其他模式中使用) |
‘U’ | 通用换行符支持 |
以下是打开文件使用的模式的列表 -
模式 | 描述 |
---|---|
r | 打开的文件为只读模式。文件指针位于文件的开头,这是默认模式。 |
rb | 打开仅用二进制格式读取的文件。文件指针位于文件的开头,这是默认模式。 |
r+ | 打开读写文件。文件指针放在文件的开头。 |
rb+ | 以二进制格式打开一个用于读写文件。文件指针放在文件的开头。 |
w | 打开仅供写入的文件。 如果文件存在,则覆盖该文件。 如果文件不存在,则创建一个新文件进行写入。 |
wb | 打开仅用二进制格式写入的文件。如果文件存在,则覆盖该文件。 如果文件不存在,则创建一个新文件进行写入。 |
w+ | 打开写入和取读的文件。如果文件存在,则覆盖现有文件。 如果文件不存在,创建一个新文件进行阅读和写入。 |
wb+ | 打开一个二进制格式的写入和读取文件。 如果文件存在,则覆盖现有文件。 如果文件不存在,创建一个新文件进行阅读和写入。 |
a | 打开一个文件进行追加。 如果文件存在,则文件指针位于文件末尾。也就是说,文件处于追加模式。如果文件不存在,它将创建一个新文件进行写入。 |
ab | 打开一个二进制格式的文件。如果文件存在,则文件指针位于文件末尾。 也就是说,文件处于追加模式。如果文件不存在,它将创建一个新文件进行写入。 |
a+ | 打开一个文件,用于追加和阅读。 如果文件存在,则文件指针位于文件末尾。 文件以附加模式打开。 如果文件不存在,它将创建一个新文件进行阅读和写入。 |
ab+ | 打开一个二进制格式的附加和读取文件。 如果文件存在,则文件指针位于文件末尾。文件以附加模式打开。如果文件不存在,它将创建一个新文件进行读取和写入。 |
文件对象方法
文件对象方法 | 执行操作 |
---|---|
f.close() | 关闭文件 |
f.read(size = -1) | 从文件读取size这个字符,当未给定size或给定负值的时候, 读取剩余的所有字符, 然后作为字符串返回 |
f.readline() | 以写入模式打开, 如果文件存在, 则在末尾追加写入 |
f.write(str) | 将字符串str写入文件 |
f.writelines(seq) | 向文件写入字符串序列seq, seq应该是一个返回字符串的可迭代对象 |
f.seek(offset, from) | 在文件中移动文件指针, 从from ( 0代表文件的起始位置, 2代表文件末尾 ) 偏移offset个字节 |
f.tell() | 返回当前在文件中的位置 |
文件对象属性
打开一个文件并且有一个文件对象后,可以获得与该文件相关的各种信息。
以下是与文件对象相关的所有属性的列表 -
属性 | 描述 |
---|---|
file.closed | 如果文件关闭则返回true,否则返回false。 |
file.mode | 返回打开文件的访问模式。 |
file.name | 返回文件的名称。 |
创建文本文件
f = open('E:\\001笔记大全\\008Python01\\test2.txt', 'w')
打开文件 open()
f = open('E:\\001笔记大全\\008Python01\\test.txt', 'r')
文件内容 .read()
size 默认参数 -1 表示读取文件内 所有的数据都会返回出来
如果 填 5 就会只读文件内 前面5个字符
f.read(5)
# 打印
你好世界,
当前指针位置 .tell()
就是说告诉我们当前文件指针所在的位置, 类似 你读到那个位置字符的位置
一个中文汉字 表示2 个字节 其它均表示 1 个字节
f = open('E:\\001笔记大全\\008Python01\\test.txt', 'r')
print(f.read(5))
print(f.tell())
f.close()
# 打印
你好世界,
9
修改指针所在位置 .seek()
有2个参数
- 指定指针位置 偏移
- 从那个位置开始计算 0 从其实位置 2 表示从末尾位置 ```python f = open(‘E:\001笔记大全\008Python01\test.txt’, ‘r’) print(f.read()) print(f.tell()) print(f.seek(40, 0))
打印
张三:你好世界, 有可能
李四:在你家门口
张三:没有看到啊, 你是不是走错门了?
李四:是吗?我再看看!
95
40
<a name="iS7qj"></a>
### 读取一行文本内容 .readline()
前提是知道当前指针在那个位置<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/10367081/1644583841505-e4376c27-d9c5-45d0-8e59-fdd4fd45d3f3.png#clientId=u72bc5a90-bf8d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=168&id=uf82b2e03&margin=%5Bobject%20Object%5D&name=image.png&originHeight=168&originWidth=355&originalType=binary&ratio=1&rotation=0&showTitle=false&size=10383&status=done&style=none&taskId=u4e47593e-efdb-41da-8ba6-e5882ebee27&title=&width=355)
```python
# 打开文件
f = open('E:\\001笔记大全\\008Python01\\test.txt', 'r')
# 读取文件内容,不填参数,默认返回全部
print(f.read())
# 定位指针所在位置, 如果是读取文件内容全部,就会返回最后的位置
print(f.tell())
# 修改指针位置 从45字节的位置 0 开始打印
print(f.seek(40, 0))
# 一行内容
print(f.readline())
f.close()
# 打印
张三:你好世界, 有可能
李四:在你家门口
张三:没有看到啊, 你是不是走错门了?
李四:是吗?我再看看!
95
40
张三:没有看到啊, 你是不是走错门了?
遍历文件内容
f = open('E:\\001笔记大全\\008Python01\\test.txt', 'r')
f.read()
f.seek(0,0)
for temp in f:
print(temp)
写入文件 .write()
# 模式 a 只追加内容
# 模式 w 如果没有这个文件,则会创建新的文件名,如果存在则会覆盖内容
f = open('E:\\001笔记大全\\008Python01\\test.txt', 'a')
f.write('我是写入的字符内容\n')
f.close()
上下文 with
with open('E:\\001笔记大全\\008Python01\\test2.txt', 'w') as f:
f.write("Hello")
# 写入数据 Hello
使用with 加 as 就会把返回的东西赋值给了 f ,然后f 就可以调用 文件的方法了,并默认书写 关闭文件的方法