Python3:读写⽂件(以及dump和load操作⼆进制⽂件,异常的处理)学习来源:Head First Python书籍
1.简介
本⼈通过学习Head First Python数据获得的知识,⾸先打开⽂件的⽅式⼀般默认为:“r”(读取模式),向⽂件中写⼊内容为:“w”,执⾏读写为:“w+”,向⽂件中追加内容:“a”
2.创建读取⽂件的函数
这⾥需要导⼊os模块:import os
import os
print("当前的⼯作⽬录是:{0}".wd()))
# ⽤于读取⽂本⽂件,读取本地的⽂件,当前的python通过将当前的⽂件中的内容变为⼀⾏⼀⾏,⽤于迭代
def readFile(filePath):
# ⽤于判断当前的⽂件是否存在
if not ists(filePath):
print("当前的⽂件 {0} 不存在!".format(filePath))
return
# 1.打开⽂件
try:
print("打开 {0} ⽂件成功!".format(filePath))
data =open(filePath)
# 2.读取⽂件
# adline(),end="")
# 3.数据回退到起点
# data.seek(0)
# 循环输出数据
for each_line in data:
(name, say)= each_line.split(":")
python怎么读文件print(name, end="")# 使⽤end=""的结果不会出现换⾏
print(" said: ", end="")
print(say, end="")
print("\n读取 {0} ⽂件成功!".format(filePath))
except:
print("当前读取⽂件出现错误,请检查当前的 {0} ⽂件是否存在".format(filePath))
finally:
if data in locals():
# 3.关闭⽂件
data.close()
print("关闭 {0} ⽂件成功!".format(filePath))
1.在pyton中读取的⽂件就是⼀⾏⼀⾏读取的,通过open⽅式打开⽂件,通过迭代open之后的⽂件获取读取的结果
2.通过readline()⽅法读取⼀⾏数据
3.记住⼀定要关闭当前的data(就是⼀定要关闭⽂件),关闭的时候需要判断当前的data变量是否存在:if data in locals():
4.当前的⽂本io操作中需要使⽤try:except:finally:⽅式进⾏异常的处理!
5.可以通过str(异常)⽅式打印异常信息(由于python问题,所以写代码的时候⼀定要判断当前变量没有写错,默认python会⾃动创建变量)
6.通过ists(filePath)判断当前路径中是否存在这个⽂件!
2.1 这⾥准备⼀个⽂本⽤于测试数据
2.2 执⾏读取操作
readFile("")
结果:
发现具有乱码问题!
3.创建写⼊⽂件的函数
# w ,通过当前的操作向⽂件写⼊⼀些内容,当前的写⼊操作会改变当前的⽂本中的内容(先清空数据然后再向⾥⾯写⼊数据) def writeFile(filePath, writeContent, option="w"):
try:
file=open(filePath, mode=option)
print(writeContent,file=file)
print("向 {0} ⽂件中写⼊内容 {1} 成功!".format(filePath, writeContent))
except Exception as e:
print("出现错误,错误的信息为:{0}".format(str(e)))
finally:
# 这⾥需要判断当前的file这个变量是否再当前的变量作⽤域的集合中
if file in locals():
file.close();
3.1 测试写⼊⽂件的函数
# w 表⽰只写,并当前⽂件不存在的时候就创建⽂件,有⽂件就清空⽂件的内容,并开始写⼊(只⽤于写的操作)
# w+ 表⽰读写,并当前⽂件不存在的时候就创建⽂件,有⽂件就清空⽂件的内容,并开始写⼊(⽤于读和写的两种操作)
# a 表⽰追加,只有单纯的写
# a+ 表⽰读写并向⽂件的内容追加内容
writeFile("","hello world!","w+")
结果:
3.2 追加⽂件内容
writeFile("","hello world!","a+")
追加结果:
1.写⼊⽂件的时候使⽤的是print⽅法,并指定file=当前open的⽂件,默认print⽅法使⽤的file=控制台
2.可以使⽤mode="w",mode="w+",mode="a",mode="a+"⽅法执⾏写⼊操作
4.使⽤try:with执⾏写⼊和读取操作
这⾥只演⽰写⼊操作,使⽤try-with的时候不需要关闭⽂件,当前的python会⾃动关闭
# 使⽤当前的try with ⽅式向⽂件中写⼊内容
def writeWithFile(filePath, writeContent, option="w"):
try:
with open(filePath, mode=option)as thisFile:
print(writeContent,file=thisFile)
print("使⽤当前的try with ⽅式向⽂件中写⼊内容成功!")
except Exception as e:
print("出现错误,错误的信息为:{0}".format(str(e)))
使⽤with open(⽂件) as 变量的时候在使⽤的时候就使⽤变量即可
操作:
# 使⽤try with⽅式读写⽂件,默认使⽤GBK编码格式写⼊
writeWithFile("","这是⼀段使⽤try with⽅式写⼊的内容","w")
结果成功!
5.使⽤dump和load写⼊和读取⼆进制⽂件
读取⼆进制⽂件的时候需要导⼊ pickle:import pickle
import pickle
import os
# ⽤于处理将数据存储到本地的⽂件并使⽤⼆进制的⽅式实现操作
# 导⼊pickle模块,来保存所需要的数据⽂件,类似当前的java的序列化和反序列化
# 将需要的数据写⼊⼆进制⽂件中进⾏永久保存,使⽤dump⽅式实现,使⽤wb⽅式写⼊⼀个⼆进制⽂件
def writeToBinaryFile(filePath, option="wb"):
try:
with open(filePath, mode=option)as writeB:
pickle.dump([1,2,"three"], writeB)
print("向⼆进制⽂件 {0} 中写⼊数据成功!".format(filePath))
except Exception as e:
print("写⼊⽂件出现错误了,当前的错误信息为:{0}".format(e))
# rb 表⽰readbinaryFile⽤于读取⼆进制⽂件的⽅式,就是加载⼆进制⽂件,使⽤load⽅式加载⼆进制⽂件
def readToBinaryFile(filePath, option="rb"):
if not ists(filePath):
print("当前读取的⼆进制⽂件:{0} 不存在!".format(filePath))
return
try:
with open(filePath, mode=option)as readB:
line = pickle.load(readB)
print("加载⼆进制⽂件获取的数据为:{0}".format(line))
except Exception as e:
print("加载本地的⼆进制⽂件出现错误,错误的信息为:{0}".format(str(e)))
# print("读取⽂件出现错误,当前的错误信息为:{0}".format(e))
# 测试写⼊的数据
# writeToBinaryFile("data.pickle")
# 测试读取的数据
readToBinaryFile("data.pickle")
测试
1.使⽤dump和load⽅式操作⼆进制⽂件的时候需要导⼊pickle 模块
2.通过pickle.dump(数据,"wb",⽂件),将数据使⽤⼆进制⽅式写⼊到⽂件中,wb表⽰(write binary data)
3.通过pickle.load(⽂件,"rb")⽅式将⼆进制⽂件数据转化为对应的数据类型,rb表⽰(read binary data)6.总结
1.当前的pyton操作⽂件的时候需要使⽤os判断⽂件是否存在
2.需要使⽤try:except:finally或者try:with:except:finally⽅式操作⽂件,避免出现异常,通过使⽤Except as e捕获异常并输出信息
3.使⽤⼆进制数据操作的时候需要使⽤pickle模块,通过dump和load⽅式保存和加载⽂件数据
4.操作⽂件使⽤load,需要指定的mode,使⽤不同的操作,写⼊的时候使⽤print并指定file即可
以上纯属个⼈见解,如有问题请联系本⼈!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。