前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【8】python文件的读写方法

【8】python文件的读写方法

作者头像
py3study
发布2020-01-19 16:42:04
5120
发布2020-01-19 16:42:04
举报
文章被收录于专栏:python3python3

(1)、读文件的步骤:

(1)打开文件   open(path,flag,encoding,[errors])   path:打开路径   flag:打开方式 r(只读) rb(二进制格式) r+(可以读写)         w(只写,存在覆盖,不存在创建) wb(写入二进制) w+(用于读写)   a(文件存在,追加) a+()   encoding:编码方式   errors:错误处理 (2)读取文件

(3)关闭文件

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

代码语言:javascript
复制
# 第二步:读取文件内容 的四个方法

#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)关闭文件

代码语言:javascript
复制
# 第三步:关闭文件
f.close()

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

方法1:

代码语言:javascript
复制
try:
    f1=open(path,'r',encoding='utf8',errors='ignore')
    print(f1.read())
except:
    print("文件读取出错!")
finally:
    if f1:
        f1.close()

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

代码语言:javascript
复制
# 方法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("读取失败!")

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

代码语言:javascript
复制
# 文件写入

# 第一步:打开文件
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自动关闭文件且追加的方式写入

代码语言:javascript
复制
# 案例2:用带with自动关闭文件且追加的方式写入
with open(path,'a') as file_obj:
    file_obj.write("康忙北鼻是一个帅哥!")


    # file_obj.flush()          #这种方式是不需要刷新与关闭操作的。

案例3

代码语言:javascript
复制
# 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

代码语言:javascript
复制
# 存入和读取二进制文件信息
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 !'
<class 'bytes'>
我们发现读取的并不是字符串,所以并不好处理
'''

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

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

代码语言:javascript
复制
# 读取
with open(path,'rb') as f2:
    str2=f2.read()
    print(str2.decode('utf-8'))
    print(type(str2.decode('utf-8')))

'''
输出:
I am jiyongjia !
<class 'str'>
这里就是提取的字符串了; 
'''

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

关于二进制的读写总结

# 总结:

如果是按照二进制打开文件的,要写入或者读取一定要编码 解码。 # 对于二进制的读与写,要进行对应结构的编码与解码,编码和解码用相同的方式才行。中文也可以解析出。 # 写的时候:str_bytes='I am jiyongjia嘉 !'.encode('utf-8') # 读的时候:str2=f2.read().decode('utf-8') ''' 如果不进行decode解码输出的话会是:b'I am jiyongjia\xe5\x98\x89 !' 它是一个 <class 'bytes'> 非字符串,不好操作、 如果使用了decode 解码再输出的话,输出结果是一个I am jiyongjia嘉 ! 它是一个 <class 'str'> '''

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

代码语言:javascript
复制
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 就可以把数据打包分享给其他语言的程序员使用了,便于跨平台操作。

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

import json

# 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)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (1)、读文件的步骤:
    • (1)打开文件   open(path,flag,encoding,[errors])   path:打开路径   flag:打开方式 r(只读) rb(二进制格式) r+(可以读写)         w(只写,存在覆盖,不存在创建) wb(写入二进制) w+(用于读写)   a(文件存在,追加) a+()   encoding:编码方式   errors:错误处理 (2)读取文件
      • (3)关闭文件
      • (2)读取文件的几种方法
      • (3)关闭文件
      • 【总结】:完整的两种读文件方式
      • 一、原生态三步法写入文件
      • 说明: flush()是及时就写入到文件中去,没有这个flush的话 只会等到文件关闭的时候才会被写入到文件。
      • 【注意】:还有就是在写入时候遇到'\n' 或者是缓冲区满了也会自动刷新
      • 案例2:用带with自动关闭文件且追加的方式写入
      • 二、二进制文件的写入
      • 案例1
      • 总结:我们发现读取的并不是字符串,所以并不好处理
      • 案例2:处理以上案例,让读取出的信息是一个str 方便处理
      • 所以,有时候我们需要把读取到的数据进行解码才行!
      • 关于二进制的读写总结
      • # 总结:
      • 如果是按照二进制打开文件的,要写入或者读取一定要编码 解码。 # 对于二进制的读与写,要进行对应结构的编码与解码,编码和解码用相同的方式才行。中文也可以解析出。 # 写的时候:str_bytes='I am jiyongjia嘉 !'.encode('utf-8') # 读的时候:str2=f2.read().decode('utf-8') ''' 如果不进行decode解码输出的话会是:b'I am jiyongjia\xe5\x98\x89 !' 它是一个 <class 'bytes'> 非字符串,不好操作、 如果使用了decode 解码再输出的话,输出结果是一个I am jiyongjia嘉 ! 它是一个 <class 'str'> '''
      • 方法一:使用pickle库 来进行读写
      • 方法二:使用json库 来进行读写
      • 说明:
      • json 文件 非常有用,因为我们往往需要在关闭程序前把程序所处理得到的数据进行保存,在下一次打开程序的时候再加载这些数据,这就要用到json。而且 json 数据是一种通用格式,通过json 就可以把数据打包分享给其他语言的程序员使用了,便于跨平台操作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档