A22-Python基础之文件File

1、open()方法

文件[扩展名] .exe .txt .jpg .mp4

Python 中 open() 方法用于打开一个文件,并返回文件对象,所以需要接收。

如果该文件无法被打开,会抛出 OSError(操作系统产生的异常)。

注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

1.1 完整语法:

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

除了第一个参数,别的都有默认参数。

1.2 常用形式:

接收文件名(file)和模式(mode) 两个参数。

open(file, mode='r')

1.3 其他参数说明

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

2、mode参数

参数 说明
+ 打开一个文件进行更新(可读可写)
b 二进制模式
r 只读,默认打开方式,文件的指针将会放在文件的开头,当文件不存在时会报错
r+ 可读可写,当文件不存在时会报错
rb 以二进制读模式打开,只可读,一般用于非文本文件如图片
rb+ 以二进制读写模式打开,可读可写,当文件不存在时报错,一般用于非文本文件如图片
w 只写,当文件不存在时会自动创建文件。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。文件内容只能是字符串,只能写入字符串
w+ 可读可写,当文件不存在时会新建,存在原文件会被清空
wb 以位进制写模式打开,只可写,当文件不存在时会新建,存在原文件会被清空
wb+ 以二进制读写模式打开,可读可写,当文件不存在时会新建,存在原文件会被清空
a 追加文件,不可读。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 追加文件,可读可写
ab 以二进制追加模式打开,追加文件,不可读
ab+ 以二进制读写模式打开,追加文件。可读可写

3、file对象常用函数

方法 描述
file.close() 关闭文件,关闭后文件不能再进行读写操作。
file.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
file.read([size]) 从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,并作为字符串返回。
file.readline([size]) 读取整行,将文件指针位置输出一行,包括 “\n” 字符。
file.readlines([sizeint]) 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。
file.tell() 返回文件当前位置。
file.write(str) 将字符串写入文件,返回的是写入的字符长度。
f.seek(offset,from) 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节,非二进制模式下不允许使用中间和末尾的偏置

4、示例

文档内容:

一
22
333
4444
55555
666666
7777777
88888888
999999999
0000000000
哈哈哈哈哈哈

4.1 查看文件读写权限

with open("file.txt",'w',encoding='utf-8') as f:
     print(f.readable())  #False
     print(f.writable())  #Ture

4.2 读取并打印文档

f= open("file.txt",'r',encoding='utf-8') #encoding默认操作系统编码
file_data=f.read() #完全读取
print(file_data)
f.close() #需要执行关闭操作

with open("file.txt",encoding='utf-8')as f:
     file_data=f.read()
     print(file_data)  #不需要执行close(),系统会自动关闭

4.3 读取一行并输出

#coding=utf-8
with open("file.txt",encoding='utf-8')as f:
    #一次只读一行
    print(1, f.readline()) #1 一
    print(2, f.readline()) #2 22
    print(3, f.readline()) #3 333

4.4 将文件内容读取到列表中f.readlines()

with open("file.txt",encoding='utf-8')as f:
    print(f.readlines())  #输出整个文件的列表格式
    print(type(f.readlines()))  #list

4.5 可读可写w+ 原文件被清空后重新写入

with open('file.txt','w+',encoding='utf-8') as f: 
    f.write('a\n')
    f.write('b\nc\n')
    f.writelines(['d\n', 'e\n'])
    f.seek(0) #将指针seek到0位置,否则读不出数据
    print(f.read())
# a\n b\n c\n d\n e\n

4.6 可读可写r+ 从指针位置所在处追加写入

with open('file1.txt','r+',encoding='utf-8') as f:
    f.seek(6)
    f.write("a\n")

4.7 将文件内容转化为列表

f = open("A.txt")
list(f)

4.8 输出

f = open("A.txt")
f.seek(0,0)
for each_line in f:
    print(each_line)

欢迎指正错误!

你可能感兴趣的:(A-Python基础,python)