f = open ('H:\\呵呵.txt',encoding='utf-8',mode='r')
s = f.read
print(s)
f.close
f:变量,f_obj,file,f_handler,...文件句柄。
open 是windows的系统功能,
windows默认编码方式:gbk,linux默认编码方式utf-8。
f.close()
流程:打开一个文件,产生一个文件句柄,
对文件句柄进行操作,关闭文件。
读的几种方式
1. f = open('H:\\呵呵.txt',encoding = 'utf-8','r')
s=f.read
print(s)
f.close()
这种是全部读出来
2. f = oepn('H:\\呵呵.txt',endoding='utf-8','r')
s = f.readline
print(s)
print(s)
print(s)
f.close() 一行一行的读 每print一次就打印一行
3. f = open('H:\\呵呵.txt',encoding='utf-8' , 'r')
s = f.readlines
print(s) 把文件的每一行作为一个元素(包括换行符)放到一个列表中
f.close()
4. f = open('H:\\呵呵.txt',encoding = 'utf-8','r')
s = f.read(int) (参数填数字 )
print(S) 打印字符的个数
f = open('H:\\呵呵.txt','rb')
s = f.read(int) (参数填数字 )
print(S) 打印字节的个数
f.close()
5. f = open('H:\\呵呵.txt',encoding = 'utf-8','r')
fpr i in f:
print(i.strip()) 循环打印每一行
在读非文字的文件时候用rb
f = open('H:\\呵呵.txt','rb')
s = f.read()
print(s)
f.close()
写的方式
如果我没有这个文件夹就创建这个文件夹写入内容,如果有这个文件夹 就清空文件内容 然后再添加
1. f = open('H:\\呵呵.txt',encoding = 'utf-8','w')
f.write('kkkk')
print(f)
f.close()
写入byte数据类型的内容
f = open('H:\\呵呵.txt','wb')
f.write('kkkk'.encoding('utf-8'))
print(f)
f.close()
a 有文件就追加内容 没有文件就创建文件加入内容
f = open('H:\\呵呵.txt',encoding = 'utf-8','a')
f.write('kkkk')
print(f)
f.close()
r+ 先读后写 一定要先读后写
f = open('H:\\呵呵.txt',encoding = 'utf-8','r+')
s = f.read()
f.write('kkkk')
print(f)
f.close()
w+ 先写后读
f = open('H:\\呵呵.txt',encoding = 'utf-8','w+')
f.write('kklkk')
print(f.tell()) 查找光标在什么位置
f.seek(0) 参数填入数字 然后把光标调整到想要的位置
s = f.read()
print(s)
f.close()
a+ 追加读 可以一直先写入再读出来
f = open('H:\\呵呵.txt',encoding = 'utf-8','a+')
f.write('kklkk')
f.seek(0)
s = f.read()
print(s)
其他方法
判断是否可读 可写打印的是bool值
print(f.writable())
print(f.readable()
f.truncate() 参数填数字 按照字节个数来截取文件内容
系统中修改文件的过程
1,将源文件读取到内存中
2,将原文件的内容修改成新内容
3,将新字符串写入新文件上
4,将原文件删除
5,将新文件的名字改成原文件名
import os
with open ('log',encoding='utf-8','r') as f1,\
open('bak_log',encoding='utf-8','w') as f2:
content = fi.read()
new_content = content.replace('sb','alex')
f2.wriite(new_content)
os.remove('log')
os.rename('bak_log','log')