1.文件
1.1文件就是存储在某种长期存储设备上的一段数据
1.2文件操作
打开文件-->读写文件-->关闭文件
注意:可以只打开和关闭文件不进行任何操作
1.3文件对象的方法
1.open():创建一个file对象,默认以只读模式打开
2.read(n):n表示从文件中读取的数据的长度,没有传n值就默认一次性读取文件的素有内容
3.write():将指定内容写入文件
4.close():关闭文件
1.4属性
文件名.name:返回要打开文件的文件名,可以包含文件的具体路径
文件名.mode:返回文件访问模式
文件名.closed:检测文件是否关闭,关闭就返回True
python">#打开文件
f = open('test.txt')
print(f.name) #文件名
print(f.mode) #文件访问模式
print(f.closed)
#关闭文件
f.close()
print(f.closed)
2.读写操作
2.1read(n):n表示从文件中读取的数据的长度,没有传n值或者传值为负值就默认一次性读取文件的素有内容
python">f = open('test.txt')
print(f.read(5)) #panda 最多读取5个数据
f.close()
这是当当前文件夹下创建的文件,也就是通过相对路径进行访问的,我们也可以通过绝对路径进行访问(注意取消\(反斜杠的转义)要么在加一个\ 要么字符串前面加r)
2.2readline:一次读取一行数据,方法执行完,就会把文件指针移到下一行,准备再次读取
2.3按照行的方式把文件内容一次性读取,返回的是一个列表,每一行的数据就是列表中的一个元素
python">f = open('test.txt')
text = f.readlines()
print(text) #['panda is studing Python\n', 'monkey is playing basketball\n', 'bear is sleeping']
print(type(text)) #<class 'list'>
for i in text:
print(i) #将数据一行一行打印
f.close()
2.4访问模式
2.4.1 r,只读模式(默认模式),文件必须存在,不存在就会报错
2.4.2 w,只写模式,文件存在就会先清空文件,再写入添加内容,不存在就会创建新文件
2.4.3 +,使用+表示可以同时读写某个文件
使用+会影响文件的读写效率,开发过程中更多时候会以只读,只写方式来操作文件
r+,可读写文件,文件不存在就会报错
w+,先写在读,文件存在就重新编辑文件,不存在就创建新文件
(但是写入后无法直接读)
2.4.4 a,追加模式,不存在就创建新文件进行写入,存在则在原有内容的基础上追加新内容
文件指针:标记从哪个位置开始读写操作
接下来我们来讨论w+写入之后读取的两种方式
1.写入之后关闭文件,再以只读的形式(或者默认形式)打开文件进行读取。
python">f = open('test1.txt','w+')
f.write('i like study')
f.close()
f = open('test1.txt')
print(f.read()) #i like study
f.close()
2.文件指针与文件定位
2.5文件定位操作
tell()和seek()
tell():显示文件内当前位置,即文件指针当前位置
seek(offset,whence):移动文件读取指针到指定位置
offset:偏移量,表示要移动的字节数
whence:起始位置,表示移动字节的参考位置,默认是0,0代表文件开头作为参考位置,1代表当前位置,2代表将文件结尾作为参考位置
seek(0,0)就会把文件指针移动到文件开头
python">f = open('test1.txt','w+')
f.write('i like study')
pos1 = f.tell()
print("当前文件指针的位置",pos1) #当前文件指针的位置 12(文件内容长度)
f.seek(0,0)
pos2 = f.tell()
print("移动后文件指针的位置",pos2) #移动后文件指针的位置 0
print(f.read()) #i like study
f.close()
3.with open
作用:代码执行完,系统会自动调用f.close(),可以省略文件的关闭步骤
python">with open('test.txt','w') as f: #f是文件对象
f.write('today is a good day')
print(f.closed) #False
print(f.closed) #True
4.编码格式
注意:file对象的encoding参数的默认值与平台有关,比如windows上默认编码字符编码为GBK
encoding表示编码集,根据文件的实际保存编码进行获取数据,对于我们而言,使用更多的是utf-8
凡是文件中涉及到中文写入读取的都建议将encoding改成utf-8/UTF-8
python">with open('test.txt','w',encoding='utf-8') as f:
f.write('我爱中国')
with open('test.txt',encoding='utf-8') as f:
print(f.read()) #我爱中国
4.1图片复制'rb'
1.读取图片,图片是一个二进制文件,想要写入必须先拿到
2.写入图片
python">with open(r"G:\照片\2afe269b-cd02-46d3-a0c7-9e9fa8d48bd51724476817746.jpeg",'rb') as file:
#读取图片
img = file.read()
print(img)
#将读取内容写入到当前文件
with open('E:\project\pyhton-learning\PyCharm_project\pythonProject2_26\图片.jpg','wb') as f:
f.write(img)
5.目录常用操作
导入模块 os
1.文件重命名 os.rename(旧名字,新名字)
2.删除文件 os.remove()
3.创建文件夹 os.mkdir() --make
4.删除文件夹 os.rmdir() --remove
python">import os
#文件重命名
os.rename('test1.txt','test2.txt')
#删除文件
os.remove('test.txt')
#创建文件夹
os.mkdir('panda')
os.mkdir('monkey')
#删除文件夹
os.rmdir('monkey')
5.获取当前目录 os.getcwd()
6.获取目录列表 os.listdir()
获取上一级目录列表os.listdir('../')