Python-04 基础语法-文件操作
1 Python文件操作
文件打开
f = open("test",encoding="utf-8").read()
#打开文件读取test文件中的全部内容
注意:该文件要存在
open()方法的完整写法以及参数说明:
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
参数解释:
参数 | 含义 |
---|---|
file | 必需,文件路径(相对或者绝对路径) |
mode | 可选,文件打开模式 |
buffering | 设置缓冲 |
encoding | 一般使用utf8 |
errors | 报错级别 |
newline | 区分换行符 |
closefd | 传入的file参数类型 |
mode参数解释
mode类型 | 含义 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
b | 二进制模式 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。 |
wb | 以二进制格式打开一个文件只用于写入。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
文件读
f = open("test","r",encoding="utf-8")# r代表只能读
#f对象表示一个文件句柄,就是相当于一个指针
data =f.read();
print(data)
注意:该文件要存在,不存在则会报错
f = open("test","r",encoding="utf-8")
print(f.readlines())
# 读取文件成为一个列表,每行作为一个元素
文件写
在对文件进行写的时候,如果写入的文件不存在,那么就会自动创建该新文件.
f = open("test2","w",encoding="utf-8")
f.write("我喜欢你")
#注意,此时不能够读取文件,调用read()方法会报错
文件读写
#打开一个文件用于读写。文件指针将会放在文件的开头。
f = open("test","r+",encoding="utf-8")
print(f.readline())
f.write("哈哈哈")
#查看文件,可以看到哈哈哈被写进文件
文件写读(不常用)
文件写读模式:如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
f = open("test2","w+",encoding="utf-8")
f.write("哈哈哈")
文件追加
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
f = open("test2","a+",encoding="utf-8")
f.write("ppp")
f.flush()#刷入硬盘
二进制文件读
一般二进制文件用于网络传输或者用于读取视频文件
f = open("test","rb")
print(f.readline())
# 结果模式:>>>b'Oh, yesterday when I was young\r\n'
二进制文件写
在进行二进制文件写入的时候,如果写入一个字符串,那么需要将字符串转化为字节类型,字符串不转码是无法写入文件的.
f = open("test","wb")
f.write("你好".encode())
注意:进行二进制文件读写操作的时候,不要指定encoding,该文件会以二进制进行编码
文件常用方法
方法名 | 含义 |
---|---|
file.tell() | 打印指针位置,按字符计数统计 |
file.seek(0) | 指针回到指定未知,0代表回到文件初始位置 |
file.encoding | 打印文件的编码 |
file.errors | 处理异常 |
file.name | 打印文件名称 |
file.seekable | 判断光标是否可以移动 |
file.flush() | 将缓冲区文件刷新到硬盘 |
file.close() | 关闭文件,关闭后不能读写 |
file.read([size]) | 从文件读取指定的字节数,如果未给定或为负则读取所有。 |
file.readline([size]) | 读取整行 |
file.write(str) | 将字符串写入文件,返回的是写入的字符长度。 |
file.writelines(list) | 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。 |
进度条打印
使用flush缓存实时刷新
import sys,time
#打印进度条
for i in range(10):
sys.stdout.write("#")
sys.stdout.flush()
time.sleep(0.5)
打印文件指定行
小文件操作
for index,line in enumerate(f.readlines()):
prin(line.strip())
if index==5:
print("----")
continue
大文件操作
#迭代器、边读取边写入,缓冲区保留一行
count=0
for line in f:
if count==9:
print(line)
count+=1
continue
print(line)