python操作文件——打开或新建文件——读、写文件——关闭资源
open()创建文件对象,程序里操作的对象映射的是磁盘上的真实文件,通过IO流将磁盘文件中的内容与程序中的对象中的内容进行同步
file=open(filename[,mode,encoding])
file:被创建的文件对象
filename要创建或者打开的文件名称
mode:模式是读还是写,打开模式默认为只读
encoding:默认文本文件中字符的编写格式为GBK
常用的文件类型打开方式
文件类型:
文本文件:存储的是普通"字符"文本,默认为unicode字符集,可以用记事本程序打开
二进制文件:把数据内容用“字节”进行存储,无法用记事本打开,必须使用专门的软件打开,比如MP3音频,jpg图片,doc文档等
打开模式 | |
r | 以只读模式打开文件,文件的指针会放在文件开头 |
w | 以只写模式打开文件,若文件不存在则创建,文件存在则覆盖原有内容,文件指针在文件开头 |
a | 以追加模式打开文件,若文件不存在则创建,文件指针在文件开头,文件存在则在末尾追加内容,文件指针在原文件末尾 |
b | 以二进制方式打开文件,不能单独使用,需要与其他模式一起使用,rb或wb |
+ | 以读写方式打开文件,不能单独使用,需要与其他模式一起使用,a+ |
文件对象的常用方法
方法名 | 说明 |
read([size]) | 从文件中读取size个字节或字符的内容返回,若省略[size],则读取到文件末尾,即一次读取文件所有内容 |
readline() | 从文件中读取一行内容 |
readlines() | 把文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回 |
write(str) | ‘将字符串str内容写入文件 |
writelines(s_list) | 将字符串列表s_list写入文件,不添加换行符 |
seek(offset[whence]) | 把文件指针移动到新的位置,offset表示相对于whence的位置,offset:为正往结束方向移动,为负往开始方向移动 whence 不同的值代表不同含义 0:从文件头开始计算 1:从当前位置开始计算 2:从文件尾开始计算 |
tell() | 返回文件指针的当前位置 |
flush() | 把缓冲区的内容写入文件,但不关闭文件 |
close() | 把缓冲区的内容写入文件,同时关闭文件,释放文件对象相关资源 |
seek()方法
file=open('c.txt','r')
file.seek(2)
print(file.read())
"""原文件为:let's try
执行结果为:t's try"""
file=open('a.txt','r',encoding='utf-8')
file.seek(6)
print(file.read())
file.close()
"""原文件为:覆盖文件追加文件
执行结果为:文件追加文件
UTF-8中一个汉字占3个字符,所以seek(6)是将指针挪到第二个汉字之后"""
修改whence会发现程序出现报错
file=open('c.txt','r')
file.seek(2,1)
print(file.read())
file.close()
"""文件报错
在文本文件中,没有使用b模式选项打开的文件,
只允许从文件头开始计算相对位置,从文件尾计算时就会引发异常,所以需要将'r'改为'rb'"""
file=open('c.txt','rb')
file.seek(2,0)
file.seek(2,1) """从上一次偏移的位置再挪两个位置"""
print(file.read())
file.close()
"""最终结果为:s try,相当于挪了四个字节"""
file=open('c.txt','rb')
file.seek(2,0)
file.seek(2,0) """这里默认还是从开头挪动指针,所以最终只挪了两个字节"""
print(file.read())
file.close()
"""最终结果为:t's try"""
with语句
【Python】with及上下文管理器的原理和应用_高岩_deal的博客-CSDN博客_上下文管理器
这篇文章中有相应解释
使用with语句进行图片复制操作如下
"""with语句以只读方式打开a.png并调用给orgin_file,
创建一个copya.png文件,调用给target_file,
然后将orgin_file中的内容给target_file"""
with open('a.png','rb') as orgin_file:
with open('copya.png','wb') as target_file:
target_file.write(orgin_file.read())