赞
踩
学习来源:Head First Python书籍
本人通过学习Head First Python数据获得的知识,首先打开文件的方式一般默认为:“r”(读取模式)
,向文件中写入内容为:“w”
,执行读写为:“w+”
,向文件中追加内容:“a”
这里需要导入os模块:import os
import os print("当前的工作目录是:{0}".format(os.getcwd())) # 用于读取文本文件,读取本地的readme.txt文件,当前的python通过将当前的文件中的内容变为一行一行,用于迭代 def readFile(filePath): # 用于判断当前的文件是否存在 if not os.path.exists(filePath): print("当前的文件 {0} 不存在!".format(filePath)) return # 1.打开文件 try: print("打开 {0} 文件成功!".format(filePath)) data = open(filePath) # 2.读取文件 # print(data.readline(),end="") # 3.数据回退到起点 # data.seek(0) # 循环输出数据 for each_line in data: (name, say) = each_line.split(":") 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.通过os.path.exists(filePath)
判断当前路径中是否存在这个文件!
readFile("readme.txt")
结果:
发现具有乱码问题!
# 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();
# w 表示只写,并当前文件不存在的时候就创建文件,有文件就清空文件的内容,并开始写入(只用于写的操作)
# w+ 表示读写,并当前文件不存在的时候就创建文件,有文件就清空文件的内容,并开始写入(用于读和写的两种操作)
# a 表示追加,只有单纯的写
# a+ 表示读写并向文件的内容追加内容
writeFile("writeTest.txt","hello world!","w+")
结果:
writeFile("writeTest.txt","hello world!","a+")
追加结果:
1.写入文件的时候使用的是print方法,并指定file=当前open的文件
,默认print方法使用的file=控制台
2.可以使用mode="w",mode="w+",mode="a",mode="a+"
方法执行写入操作
这里只演示写入操作,使用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("writeWithTest.txt", "这是一段使用try with方式写入的内容", "w")
结果成功!
读取二进制文件的时候需要导入 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 os.path.exists(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)
1.当前的pyton操作文件的时候需要使用os判断文件是否存在
2.需要使用try:except:finally或者try:with:except:finally方式操作文件
,避免出现异常,通过使用Except as e捕获异常并输出信息
3.使用二进制数据操作的时候需要使用pickle模块,通过dump和load方式保存和加载文件数据
4.操作文件使用load,需要指定的mode,使用不同的操作,写入的时候使用print并指定file即可
以上纯属个人见解,如有问题请联系本人!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。