热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python写入文件代码_【8】python文件的读写方法

(1)、读文件的步骤:(1)打开文件open(path,flag,encoding,[errors])p

1471917-20181018235049223-1397707053.png

1471917-20181019010001374-612829758.png

(1)、读文件的步骤:

(1)打开文件

open(path,flag,encoding,[errors])

path:打开路径

flag:打开方式 r(只读) rb(二进制格式) r+(可以读写)

w(只写,存在覆盖,不存在创建) wb(写入二进制) w+(用于读写)

a(文件存在,追加) a+()

encoding:编码方式

errors:错误处理

(2)读取文件

(3)关闭文件

(2)读取文件的几种方法

#第二步:读取文件内容 的四个方法

#1:方法1-读取文件的全部内容[只适合读取小的文件,不然费内存]

str1=f.read()print(str1)#2 方法2-读取指定字符数

str2=f.read(10)print(str2)

str3=f.read(2)print(str3)'''输出:

def proces

sF

总结:文件不关闭的情况下,读完一次,指针在最后边,继续读2个字符信息。'''

#3 方法3-每次读取一行数据,包括‘\n’#str4=f.readline()

str4=f.readline(10) #表示读取一行的10个字符

print(str4)#4 方法4-读取方式4 读取所有行并返回列表

list7=f.readlines()

list7=f.readlines(22) #每行读取这么多

print(list7)

(3)关闭文件

#第三步:关闭文件

f.close()

【总结】:完整的两种读文件方式

方法1:

try:

f1=open(path,'r',encoding='utf8',errors='ignore')print(f1.read())except:print("文件读取出错!")finally:iff1:

f1.close()

方法2:带with的自动关闭文件的方式

#方法2 with 自动关闭文件

path=r'E:\[AAA]全栈学习python\day2\file1.txt'

try:

with open(path) as file_obj:

content=file_obj.read()print(content)except:print("读取失败!")

1471917-20181020165127224-113874623.png

一、原生态三步法写入文件

#文件写入

#第一步:打开文件

path=r"E:\[AAA]全栈学习python\day2\file2.txt"f=open(path,'w')#第二步:写文件#1 这里其实只是先写入了缓冲区,但是还没得奥文件中去,需要刷新

f.write("jiajia is a beautiful girl333 !")#2 刷新缓冲区,就是立即写入文件,不写刷新就是关闭才能写入文件

f.flush()#第三步:关闭文件

f.close()

说明: flush()是及时就写入到文件中去,没有这个flush的话 只会等到文件关闭的时候才会被写入到文件。

【注意】:还有就是在写入时候遇到'\n' 或者是缓冲区满了也会自动刷新

案例2:用带with自动关闭文件且追加的方式写入

#案例2:用带with自动关闭文件且追加的方式写入

with open(path,'a') as file_obj:

file_obj.write("康忙北鼻是一个帅哥!")#file_obj.flush() #这种方式是不需要刷新与关闭操作的。

案例3

#1 普通写入一个文件信息

path=r'E:\[AAA]全栈学习python\day3\file1.txt'with open(path,'w') as f1:

str="I love programming"str2="I also like write articles"f1.write(str)

f1.write(str2)'''输出:

发现两个写入的文件信息都在一行显示了。

I love programmingI also like write articles

解决办法:

在每个str 中加上换行符即可!'''

#2每添加一段信息 ,带换行信息写入如何做呢!

path2=r'E:\[AAA]全栈学习python\day3\file2.txt'with open(path,'w') as f1:

str="I love programming\n"str2="I also like write articles \n"f1.write(str)

f1.write(str2)'''输出

I love programming

I also like write articles'''

#3 附加到文件file2

with open(path2,'a') as file_obj:

file_obj.write("i am the first one!\n")

file_obj.write("I AM THE SECOND ONE!\n")'''输出:

i am the first one!

I AM THE SECOND ONE!'''

二、二进制文件的写入

案例1

# 存入和读取二进制文件信息

path = r'E:\[AAA]全栈学习python\day3\file3.txt'

with open(path,'wb') as f1:

str_bytes='I am jiyongjia !'.encode('utf-8')

f1.write(str_bytes)

with open(path,'rb') as f2:

str2=f2.read()

print(str2)

print(type(str2))

'''

输出、

b'I am jiyongjia !'

我们发现读取的并不是字符串,所以并不好处理

'''

总结:我们发现读取的并不是字符串,所以并不好处理

案例2:处理以上案例,让读取出的信息是一个str 方便处理

#读取

with open(path,'rb') as f2:

str2=f2.read()print(str2.decode('utf-8'))print(type(str2.decode('utf-8')))'''输出:

I am jiyongjia !

这里就是提取的字符串了;'''

所以,有时候我们需要把读取到的数据进行解码才行!

关于二进制的读写总结

# 总结:

如果是按照二进制打开文件的,要写入或者读取一定要编码 解码。

# 对于二进制的读与写,要进行对应结构的编码与解码,编码和解码用相同的方式才行。中文也可以解析出。

# 写的时候:str_bytes='I am jiyongjia嘉 !'.encode('utf-8')

# 读的时候:str2=f2.read().decode('utf-8')

'''

如果不进行decode解码输出的话会是:b'I am jiyongjia\xe5\x98\x89 !' 它是一个 非字符串,不好操作、

如果使用了decode 解码再输出的话,输出结果是一个I am jiyongjia嘉 ! 它是一个

'''

1471917-20181020182803371-696610845.png

方法一:使用pickle库 来进行读写

import pickle #引入数据持久性模板

#1--使用 pickle 方式写入进去。

mylist = [1,2,3,4,5,6,"jiajia","我是雷锋"]#把这个list写入文件4

path = r'E:\[AAA]全栈学习python\day3\file4.txt'f= open(path,'wb') #打开

pickle.dump(mylist,f)

f.close()#关闭

#读取出来、

f2= open(path,'rb') #打开

templist=pickle.load(f2)print(templist)

f2.close()#关闭

'''输出:

[1, 2, 3, 4, 5, 6, 'jiajia', '我是雷锋']'''

方法二:使用json库 来进行读写

说明:

json 文件 非常有用,因为我们往往需要在关闭程序前把程序所处理得到的数据进行保存,在下一次打开程序的时候再加载这些数据,这就要用到json。而且 json 数据是一种通用格式,通过json 就可以把数据打包分享给其他语言的程序员使用了,便于跨平台操作。

#说明:#json 文件 非常有用,因为我们往往需要在关闭程序前把程序所处理得到的数据进行保存,#在下一次打开程序的时候再加载这些数据,这就要用到json。而且 json 数据是一种通用格式,#通过json 就可以把数据打包分享给其他语言的程序员使用了,便于跨平台操作。

importjson#1 把列表存入到json 文件 即json.dump

list1=[1,12,3,4,5,6,"嘉嘉","jiajai"]

dict1={"1":"puyhon学习",'2':"Java学习"}

path= r'E:\[AAA]全栈学习python\day3\jsonfile1.json'with open(path,'w') as json_file:

json.dump(list1, json_file)#2 把json文件中的内容取出 即json.load

path= r'E:\[AAA]全栈学习python\day3\jsonfile1.json'with open(path) as f2:

file=json.load(f2)print("welcome back! 提取内容是:",file)

1471917-20181018235011693-1460492192.png



推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • python限制递归次数(python最大公约数递归)
    本文目录一览:1、python为什么要进行递归限制 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
author-avatar
撒谎滴土豆
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有