文件操作基本循的方式首先需要文件路径,其次对于文件的编码方式进行选择,最后执行操作。
文件操作:
1.文件路径:
绝对路径:将文件的全部路径完全输入,从而查找到文件
相对路径:在当前目录下打开,或查找文件
f = open('C:你好.txt', mode='r',encoding= 'utf-8') s = f.read() print(s) f.close() #绝对路径查找 f = open('你好.txt', mode='r',encoding= 'utf-8') s = f.read() print(s) f.close()
#相对路径查找,注意需要在和文件在相同的目录下才能查找到.
2.编码方式:
基本的编码方式,utf-8,gbk等
在打开文件之前需要确定文件的编码方式是什么,因此用encoding = ‘’来确认编码方式。
3.操作方法:
有只读 ‘r’,读写‘r+’,写读‘w+’,只写‘w’
文件格式:
f == 变量,表示问一个文件句柄,代表一个文件的开头。
open是windows自带的系统功能,python调用打开文件,
并且windows的默认编码方式为‘gbk’,不输入encoding时会自动使用‘gbk’编码
liunx默认的编码方式为utf-8
结尾务必带上f.close()
#文件流程:打开文件--------产生文件句柄------对文件进行操作-------关闭文件
文件的读写:
1.读:
‘r’,只读模式,读的方式有五种:
’rb‘,二进制读取模式,主要用来对图片视频进行转化为二进制读取。
'r+' 读写模式,读取之后在进入写入模式,并且光标随着读而移动
’r+b‘ 二进制读写模式,对图片视频等进行写入。
1.全部读出来: f.read()------占内存
f = open('C:你好.txt', mode='r',encoding= 'utf-8') s = f.read() #全部读取 print(s) f.close()
2.一行一行读取: f.readline() ------ 效率不太高
f = open('C:你好.txt', mode='r',encoding= 'utf-8')#需要在c盘创建一个文件 s = f.readline() print(s) print(s) print(s) print(s) f.close()
3.将原文件的每一行作为一个列表的元素输出---------太占内存
f = open('C:你好.txt', mode='r',encoding= 'utf-8') s = f.readlines() #变成列表输出,每个元素都有 在末尾 print(s) f.close()
4.按照字符去读,在‘r’模式下,但是在‘rb‘模式下会按照字节的模式来读取
f = open('C:你好.txt', mode='r',encoding= 'utf-8') s = f.read(5)# 取出前五个自字符 print(s)#替换掉他! #符号也算。 f.close()
f = open('C:你好.txt', mode='rb')#调整为rb模式的时候编码方式改变,用bytes类型读取,利用二进制解码,所以不需要编码。 s = f.read(5)# 取出前五个自字符 print(s)#'xe6x9bxbfxe6x8d' f.close()
5.循环读取,读一行删一行,只占用一行内存。
('C:你好.txt', mode='r',encoding= 'utf-8') for i in f: print(i) f.close()
2.写
’w‘ 只写入
1.没有文件则会创建 一个新的文件,并写入内容。
2.有文件的时候,将原文件内容清空并写入内容。
’w+‘先写入然后读取,写读,需要注意的是光标的移动问题。
’w+b‘写读,只是使用的是二进制的当时写读,并且能够处理图片等各种其他格式的文件。
3.追加
’a‘ 只追加写模式,不可读;不存在则创建;存在则只追加内容,
'a+'追加写读模式,先追加写入后再读取。
’a+b‘追加写度模式,并且使用二进制
4.光标问题:
在文件中写入内容时候,写入的地点由光标决定,
f.tell() == 显示光标的位置#按照字节显示
f.seek()== 更改光标的位置,按照字节更改!
5.其他方法:
truncate方法: 截断数据,仅保留指定之前数据
writetable:判断文件是否可以写入
readtable : 判断问价是否可以读取
6.关闭问题:
f.close()是在内存中关闭文件,有一定可能残留在应用程序里面,
del f 是在程序中删除,完全清空。
7.with open()as f:
1.避免忘记关闭文件,此程序自动关闭。
2.一次性操作多个文件句柄
8#######重点!!
所有输入的底层原理。
1.将原文件读取到内存
2.在内存中进行修改,形成新的字符串文件。
3.将新的字符串写入新文件
4.将源文件删除
5.将新文件重命名成原文件。
import os with open('你的名字',encoding = 'utf-8') as f1, open('你的名字.fuzhi',encoding = 'utf-8',mode ='w') as f2: s = f1.read() f2.write(s.resplace('你好','hello')) os.remove('你的名字') os.rename('你的名字.fuzhi','你的名字')