我想当第一

本节内容:

一.初识文件操作

**针对磁盘中的文件的读写.文件I/O
文件操作步骤: 1.打开文件 2.读写文件 3.关闭文件
就只有这三个步骤,可以用大象装进冰箱来类比,帮助理解

写入文件的操作:(类比大象装进冰箱)
1:打开文件open() ==> 打开冰箱
2:写入内容write() ==> 把大象装进冰箱
3:关闭文件close() ==> 关闭冰箱门

读取文件的操作:(类比取出大象)
1:打开文件open() ==> 打开冰箱
2:写入内容read() ==> 把大象取出
3:关闭文件close() ==> 关闭冰箱门**

二.文件操作相关函数

1.open()打开文件

open(文件路径,打开的方式,字符集)

参数一:文件路径
路径:url
相对路径:就像给别人指路一样:在苏宁广场前面…..
针对文件的相对路径:
./1.txt ==> ./代表当前目录中的1.txt
../1.txt ==> ../代表上一级目录的1.txt
1.txt ==>不写 默认表示是当前目录,等价于 ./1.txt
绝对路径:就像收货地址一样:安徽省宣城市宣州区人民政府….
windows: C:\Windows\1.txt

参数二:打开的方式
基础模式: w r x a
w模式 write 写入模式
1:文件不存在,则创建文件
2:文件存在,则打开,并清空文件内容
3:文件打开后,文件的指针在文件的最前面
r模式 read 读取模式
1:文件不存在,则报错
2:文件存在,则打开,文件的指针在文件的最前面
x模式 xor 异或模式
1:文件不存在则创建
2:文件已存在则报错,防止覆盖
2:文件的指针在最前面
a模式 append 追加模式
1:文件不存在则创建
2:文件如果存在则打开(和w模式的区别:a模式打开不会清空内容)
3:文件的指针在最后
扩展模式:
b模式 bytes 二进制
+模式 plus 增强模式(可读可写)
文件操作模式的组合:
w r a x
wb rb ab xb
w+ r+ a+ x+
wb+ rb+ ab+ xb+

参数三:encoding 可选参数,设置文件的字符集
如果是一个二进制文件时,不需要设置字符集
encoding=’utf-8’

示例如下:

w模式
1:文件不存在,则创建文件
2:文件存在,则打开,并清空文件内容
3:文件打开后,文件的指针在文件的最前面

_#1.打开文件
#创建了一个文件对象
_fp = open(‘./1.txt’,‘w’,encoding=‘utf-8’)
print(fp,type(fp))

_#2.写入内容
#使用文件对象,调用write()方法 写入内容
_fp.write(‘hello world’)

_#3.关闭文件
#使用文件对象,调用close()方法 关闭文件
_fp.close()

r模式
1:文件不存在,则报错
2:文件存在,则打开,文件的指针在文件的最前面

#1.打开文件
#创建了一个文件对象
_fp = open(‘./1.txt’,‘r’,encoding=‘utf-8’)
#如果使用r模式读取一个不存在的文件就会报错
_print(fp,type(fp))

_#2.读取内容
#使用文件对象,调用read() 方法
_res = fp.read()
print(res)

_#3.关闭文件
#使用文件对象,调用close()方法 关闭文件
_fp.close()

2.write()写入文件

**write() ==> 文件对象.write(字符串)

writelines() ==> 文件对象.writelines(容器) 注意:容器内必须是字符串类型数据**

示例如下:
###写入相关函数
_vars = ‘iloveyou’
varss = [‘gsw’,‘nb’]
with open(‘./test/1.txt’,‘w’,encoding=‘utf-8’) as fp:
fp.write(vars)
#只能写入字符串类型数据
fp.writelines(varss)#可以写入容器类型数据,但容器内必须是字符串类型数据_

3.read()读取文件

read() ==> 文件对象.read() 从当前位置读取到最后
或 文件对象.read(读取的字节数) 可以读取指定长度的字符

readline() ==> 文件对象.readline() 一次只能读取一行内容


readlines() ==> 文件对象.reanlines() 一次读取所有数据,每一行作为一个元素,返回一个列表

示例如下:
##读取相关函数
with open(‘./test/1.txt’,‘r’,encoding=‘utf-8’) as fp:
fp.seek(2) #设置指针的位置
_res = fp.read()
#默认从当前指针开始读取到最后
res = fp.read(3) #设置读取字节的长度,中文也算1个长度
res = fp.readline() #一次只读取一行内容
print(res)
res = fp.readline(2)
#可以读取当前行指定的字节长度
print(res)
fp.seek(0,2)
#把文件指针设置到末尾
res = fp.readlines() #一次读取多行数据,每一行作为一个元素,返回一个列表
_print(res)

4.close()关闭文件

close() ==> 文件对象.close() 关闭打开的文件对象

三.文件操作高级写法-常用

  1. 格式 ==> **with **open(文件路径,打开模式) **as **变量:<br /> 变量.操作

# r+ 可读可写
# w+ 可读可写 注意:打开了文件后会清空文件
# a+ 追加写,并且可读
# x+ 异或
#注意:seek(0)可以将指针移到开始的位置

_with open(‘./2.txt’,‘r+’,encoding=‘utf-8’) as fp:
res = fp.read()
print(res)
fp.write(‘你好’)