常见的文件类型
- txt (储存数据类型)
- csv (储存数据类型)
- json
- html
- mp4
文件的操作流程
- 打开—>open()
- 读/写—>read(/write()
- 关闭—>close()
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
文件的打开
内置函数:open(),创建一个file对象,之后才可以用它调用相关方法
格式:
file_object = open(file, [,mode], [,encoding='utf-8'],[,buffering])
解释:
- file_object —> open()返回的文件对象
- file —> 要打开的文件
- mode —> 指定模式:只读,写入,追加等等。表,一般默认为只读。
- encoding —> 指定文件的编码,通常用"utf-8" / “GBK”
- buffering —> 若设置为0,不会有寄存;设为1,访问文件时会寄存行;设为>1的数,表明是寄存区的缓冲大小;设为负数,则寄存区的缓存区大小为系统默认。
文件对象的属性
属性 | 描述 |
---|---|
f.name | 返回文件的名称 |
f.mode | 返回打开文件的访问模式 |
f.closed | 如果文件已关闭,返回true;否则,false |
关闭
f.close()
节省计算机资源和提供性能,使用完文件之后,关闭它。
关闭
读
#print(i.strip())的效果和print(i, end="") f = open('./date/青花瓷.txt', 'r', encoding="utf-8") for i in f: print(i.strip()) with open('./date/GreenFlowerPorcelain.txt', 'r') as f: print(f.read()) print(f.closed) #True #不用再输入close()
- f.read([size])
- 从文件指针处读取
- 传递size,指定读取的字节数
- readline()
- readlines()
写
关闭之后重新打开再写会覆盖之前的
写一个新的文件会自动生成
f = open('./date/城市学院.txt', 'w', encoding="utf-8")
f.write("I come from Zhejiang University City College.")
f.close()
f = open('./date/城市学院.txt', 'w', encoding="utf-8")
f.write("I come from ZUCC.")
f.close()
- write()
- writelines()
- w+:可读可写
定位读取
-
f.tell()
- 获取文件的当前位置
-
f.seek()
-
seek(offet[, from])
-
offset, 要移动的字节数
-
from,指定偏移的参考位置
0 —> 从开头偏移
1 —> 当前位置偏移
2 —> 从末尾开始偏移
-
-
#随机生成100个数写入文件
import random
f = open('./date/test.txt', 'w+')
for i in range(100):
num = random.randint(1, 100)
f.write(str(num) + ' ')
f.seek(0, 0)
print(f.read())
f.close()