标签:pre 新建 移动 列表 文件的 close 总结 打开方式 功能
需要的参数:
例:
f1 = open(‘F:\测试.txt‘,mode=‘r‘,encoding=‘utf-8‘,)
content = f1.read()
print(content)
f1.close()
open():内置函数,open底层调用的是操作系统的接口
f1:变量名,例:fh,file_header,f_h,文件句柄,对文件进行的任何操作,都得通过文件句柄
encoding:可以不写,不写则默认为系统的默认编码
mode:定义操作方式,r为读模式
f1.close():关闭文件句柄,若不关闭会一直占用内存空间
# 常见报错原因:
UnicodeDecodeError
# 文件存储时与文件打开是编码类型不一致
No such file or directory
# 文件路径或文件名错误。路径分隔符被解释器误认为特殊含义的字符,可以再次转义,或在路径整体前面加上r
read():读取文件全部
read(n):按照字符串读取
readline():每次只读取一行,读取出来的每行后面都有一个换行符\n,可以在读取的后面加一个strip()
readlines():返回一个列表,列表里的元素是源文件的每一行,如果文件很大,会占大量内存
# for循环读取:(推荐)
# 文件句柄是一个迭代器,特点就是每次循环只在内存中占一行数据,非常节省内存
# 例:
f1 = open(‘F:\测试.txt‘,mode=‘r‘,encoding=‘utf-8‘)
for content in f1:
print(content)
f1.close()
rb模式:以二进制格式打开一个文件用于只读。主要操作非文本文件,
带b的模式操作文件,不用声明编码方式。读取后的文件类型为bytes类型
# 例:
fi = open(r‘source‘,mode=‘rb‘)
coutent = fi.read()
print(coutent)
fi.close()
f = open(‘文件的路径‘,encoding=‘utf-8‘,mode=‘w‘)
# 未指定路径则为当前路径
f.write(‘写入的内容,只能有这一个参数‘)
f.close()
wb:
# 例:先以bytes类型读取图片,再将读取出来的内容全部写入另一个文件,这样就复制了一份图片
fi = open(r‘source‘,mode=‘rb‘)
coutent = fi.read()
fi.close()
f1 = open(‘new‘,mode=‘wb‘)
f1.write(coutent)
f1.close()
a,ab,a+:追加并可读,a+b
没有文件则创建文件,追加内容。文件存在则原文件最后直接追加。
f = open(‘fiel‘,encoding=‘utf-8‘,mode=‘a‘)
f.write(‘追加的内容‘)
f.close()
# 例:
f = open(‘F:\测试.txt‘,mode=‘r+‘,encoding=‘utf-8‘)
content = f.read()
print(content)
f.write(‘写入的内容‘)
f.close()
# 注意:操作文件时,要注意光标位置,例如写读操作,写操作完光标会在末尾,所以无法读出写入的内容
可在read()之前,利用seek(0)将光标移动到首部。
总结:
三个大方向,四种模式:
读:r,rb,r+,r+b
写:w,wb,w+,w+b
追加:a,ab,a+,a+b
相应的功能:
read(n):
seek():
tell():
flush():强制刷新。接在write()后面,可在写入之后强制保存。
?
语句 with open() as f:
优点1:不用手动关闭,with上下文管理会在一段时间后自动关闭文件句柄。
with open(r‘F:\测试.txt‘,mode=‘r‘,encoding=‘utf-8‘) as f1:
print(f1.read())
优点2:一个with语句可以操作多个文件,产生多个文件句柄。
with open(r‘F:\测试.txt‘,mode=‘r‘,encoding=‘utf-8‘) as f1, open(‘filename‘,mode=‘w‘,encoding=‘utf-8‘) as f2 :
f1.read()
f2.write(‘content‘)
?
所有的软件对文件的修改都分为5步:
1、以读的模式打开文件。
2、以写的模式创建一个新的文件。
3、将原文件的内容读出来修改成新的内容、写入新文件。
4、将原文件在内存级别删除。
5、将新文件重命名成原文件。
1、以读的模式打开文件。
with open(r‘F:\t1.txt‘,encoding=‘utf-8‘) as f1, open(r‘F:\t2.txt‘,encoding=‘utf-8‘,mode=‘w‘) as f2: # 2、以写的模式创建一个新文件
?
old_content = f1.read()
new_content = old_content.replace(‘葫芦‘,‘丝瓜‘)
f2.write(new_content)
import os # 需要用到 os 模块
os.remove(r‘F:\t1.txt‘)
os.rename(r‘F:\t2.txt‘,r‘F:\t1.txt‘)
1、以读的模式打开文件。
with open(r‘F:\t1.txt‘,encoding=‘utf-8‘) as f1, open(r‘F:\t2.txt‘,encoding=‘utf-8‘,mode=‘w‘) as f2: # 2、以写的模式创建一个新文件
for line in f1:
new_line = line.replace(‘丝瓜‘,‘葫芦‘)
f2.write(new_line)
4、将原文件在内存级别删除。
import os
os.remove(r‘F:\t1.txt‘)
5、将新文件重命名成原文件。
os.rename(r‘F:\t2.txt‘,r‘F:\t1.txt‘)
?
标签:pre 新建 移动 列表 文件的 close 总结 打开方式 功能
原文地址:https://www.cnblogs.com/ChiRou/p/13418772.html