文件操作open

1.模式

前面加b,就是以二进制数据进行存取,bytes类型

模式 文件存在 文件不存在 操作 文件内容
r 正常打开 报错 只读 只可读不可写。可以用指针调节位置去读。
w 清空文件 创建新文件 只写 文件内容就被清空。可以调节指针位置去写。
a 正常打开 创建新文件 只写 不覆盖原文件内容。只能在末尾追加内容,调节指针无法改变写的位置。
r+ 正常打开 报错 读写 不覆盖原文件内容。指针默认在末尾追加内容,指针在其它位置写操作时,覆盖原文件内容。根据指针位置读文件
w+ 清空文件 创建新文件 读写 打开文件时,内容就被清空。
a+ 正常打开 创建新文件 读写 指针默认在末尾,写文件只能追加内容,根据指针位置读文件。

open参数

open(file,mode=‘r’,buffering=-1,encoding=None,errors=None,
newline=None, closefd=True, opener=None)

参数说明
    file: 必需,文件路径(相对或者绝对路径)
    mode: 可选,文件打开模式
    buffering: 设置缓冲
    encoding: 一般使用utf-8
    errors: 报错级别
    newline: 区分换行符
    closefd: 传入的file参数类型

2.文件的操作

写入

文件对象. write(str)
	参数str表示要写入的字符串。若字符串写入成功,write()方法返回本次写入文件的长度。而且write()方法不能自动换行。需要手动的添加“\n”
	
文件对象. writelines([str,str,str,str])
	向文件中写入字符串序列
# 使用open方式写入
f=open('test.txt','w')		
f.write('我的文件内容'
f.close()#关闭文件

        
# 使用with open方式写入
with open('test.txt','w') as f:
   f.write('我的文件内容')

读取

read():默认会把文件的所有内容一次性读取到内存,如果文件太大,对内存的占用会非常严重;

readline():可以一次读取一行内容,方法执行后,会把文件指针移动到下一行。

注意:
	read( )(参数缺省时)和readlines( ) 方法都可一次读取文件中的全部数据,但这两种操作都不够安全。因为计算机的内存是有限的,若文件较大,read()和readlines()的一次读取便会耗尽系统内存。

为了保证读取安全,通常多次调用read()方法,每次读取size字节的数据。或者使用readline()方法按行读取内容。
# 使用open方式读取
f=open('test.txt','r')		
data = f.read()
f.close()
print(data)


# 使用with open方式读取
with open('test.txt','w') as f:
   data = f.read()

文件的定位读取

tell()方法:获取文件当前的位置;

seek()方法:设置当前文件读写位置

tell()

f = open('a.txt', 'r', encoding='utf-8')
f.readline()
print(f.tell())

# 如果有换行的话【\n】也算位置; 2位
# 一个英文字符和标点符号:1位
# 一个中文字符和中文标点:3位

seek(offset, from)

offset: 表示偏移量(字节数),即读写位置需要移动的字节数;
from: 表示从哪里开始偏移,
	0 表示从开始位置偏移(默认值)
	1 从当前位置偏移
	2 文件结尾作为基准进行偏移

获取文件名字

with open('a.txt', 'r', encoding='utf-8') as f:
    print(f.name)

获取文件大小

import os
b = os.path.getsize("文件的路径")

with 方法打开处理文件帮我我们做了什么

打开文件在进行读写的时候可能会出现一些异常状况,这时候with方法帮我们实现了finally中f.close。
posted @ 2022-06-19 21:04  lxd670  阅读(26)  评论(0编辑  收藏  举报