常见的文件类型
- txt
- csv
- json
- html
- mp4
文件操作的流程
- 打开 —> open ()
- 读/写 —> read () / write()
- 关闭 —> close ()
用途 | 方法 | 功能 |
---|---|---|
打开/关闭文件 | f = open(file) | 打开文件 |
f = close(file) | 关闭文件 | |
f.read([size]) | 从文件中读取指定的字节数;若未指定,读取所有 | |
f.readline([size]) | 读取整行,包括"\n" | |
读写文件内容 | f.readlines([size]) | 读取所有行,并返回列表 |
f.write(str) | 将字符串写入文件,并返回字符串长度 | |
f.writelines(seq) | 将文件写入一个序列字符串列表。如果需要换行,需要自己加换行符 | |
f.flush | 刷新文件缓冲,直接把内部缓冲的数据写入文件 | |
文件的定位 | f.seek(offset) | 设置文件的当前位置,即指针位置 |
f.tell() | 返回文件的当前位置,即指针位置 |
文件的打开与关闭
内置函数:open(),创建一个file对象,之后才可以用它调用相关的方法
格式:
file_object = open(file, [, mode], [,encoding = 'utf-8'], [, buffering])
解释:
- file_object —> open() 返回的文件对象
- file —> 要打开的文件
- mode —> 指定模式:只读, 写入, 追加等等。 表,一把默认为只读
- encoding —> 指定文件编码,usaully, “utf-8” / “GBK”
- buffering —> 若设置为0, 不会有寄存;设为1,访问文件时会有寄存行;设为大于1的数,表示是寄存区的缓冲大小;设为负数,则寄存区的缓存区大小为系统默认。
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
文件对象的属性
属性 | 描述 |
---|---|
f.name | 返回文件的名称 |
f.mode | 返回打开文件的访问模式 |
f.close | 如果文件已关闭,返回True;否则,false |
关闭
f.close()
节省计算机资源和提供性能,使用完文件之后,关闭它
文件的读写
读
- f.read([size])
- 从文件指针处读取
- 传递size,指定读取的字节数
with open('./data/GreenFlowerPorcelain.txt', 'r') as f:
print(f.read())
f = open('./GreenFlowerPorcelain.txt','r', encoding='utf-8')
# f1= f.readline()
# f2= f.readline()
# f3 = f.readline()
# print(f1)
# print(f2)
# print(f3)
# f_ls=f.readlines()
# print(f_ls)
# print(len(f.readlines()))
# f1=f.readline(10)
# f2=f.readline(10)
# print(f1)
# print(f2)
for i in f:
print(i)
f.close()
写
- writr()
- writelines()
f = open('./data/城市学院.txt', 'w', encoding='utf = 8')
f.write('我是谁')
f.write('我是')
f.close()
f = open('./data/城市学院.txt', 'w', encoding='utf-8')
seq = ['浙江大学城市学院\n','在拱墅']
f.writelines(seq)
f.close()
定位读取
- f.tell() 获取文件的当前位置
- f.seek()
- seek(offet[, from])
- offset, 要移动的字节数
- from,指定偏移的参考位置
- 0 —> 从头开始偏移
- 1 —> 当前位置偏移
- 2 —> 从末尾偏移
- seek(offet[, from])
f = open('./data/GreenFlowerPorcelain.txt', 'r')
f1 = f.read(10)
f_s1 = f.tell()
print(f_s1)
f.seek(10, 0)
f2 = f.read(10)
print(f2)
f.close()
随机生成1-100是数,写入文本
import random
f = open('./data/test.txt', 'w+')
for i in range(100):
f.write(str(random.randint(1, 100)))
f.seek(0, 0)
print(f.read())
f.close()
import random
li = []
for i in range(100):
a = random.randint(0, 100)
li.append(a)
sr = str(li)
f = open('./data/test.txt', 'w')
f.write(sr)
f.flush()
f = open('./data/test.txt', 'r')
print(f.read())
f.close()