(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:
if f1:
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("读取失败!")

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

# 文件写入

# 第一步:打开文件
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 !'
<class 'bytes'>
我们发现读取的并不是字符串,所以并不好处理
'''

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

案例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 !
<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库 来进行读写

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 就可以把数据打包分享给其他语言的程序员使用了,便于跨平台操作。 import json # 1 把列表存入到json 文件 即json.dump
list1=[1,12,3,4,5,6,"嘉嘉","jiajai"]
dict1={"":"puyhon学习",'':"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)

【8】python文件的读写方法的更多相关文章

  1. Python 文件对象和方法

    Python文件对象和方法 1.打开和关闭文件 Python提供了必要的函数和方法进行默认情况下的文件基本操作,我们可以用file对象做大部分文件操作. open()方法 我们必须先用Python内置 ...

  2. Python文件的读写操作

    Python文件的使用 要点:Python能够以文本和二进制两种形式处理文件. 1.文件的打开模式,如表1:  注意:使用open()函数打开文件,文件使用结束后耀使用close()方法关闭,释放文件 ...

  3. python文件的读写总结

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  4. 转载 python文件复制的方法

    Python复制文件的9种方法 51Testing软件测试网 17-11-1614:13 以下是演示"如何在Python中复制文件"的九种方法. 1.shutil copyfile ...

  5. python文件的读写的模式

    <1>打开文件 在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件 open(文件名,访问模式) 示例如下: f = open('test.txt', 'w' ...

  6. python文件的读写权限以及相关应用read、write和文件指针

    f=open('ceshi.txt','a',encoding='utf-8')r=open('ceshi.txt','r',encoding='utf-8')上面的2种写法可以用with来写:wit ...

  7. Python文件的读写

    一.写数据 f = open("hello.txt", "w") f.write("hello world python!") f.clos ...

  8. [ Python ] 文件的读写操作

    1. 文件读写操作 读写文件是最常见的 IO 操作, Python 内置了读写文件的函数.在磁盘上读写文件的功能是由操作系统提供的,所以读写文件是请求操作系统打开一个文件对象(通常称为文件描述符),然 ...

  9. 第9.9节 Python文件随机读写定位操作方法seek

    类似于C语言,Python也提供了文件位置定位的操作方法seek. 一. 语法 seek(offset, whence=SEEK_SET) 语法释义: 1)offset :将文件当前操作位置移动偏移量 ...

随机推荐

  1. 用python写web一定要去破解的异步请求问题.经历web.py和tornado,完破!

    1.问题 上个学期,给学校写了一个数据服务,主要从oracle里面读取一些数据供查询使用,非常快速的用web.py搭建了起来.调试顺利,测试正常,上线!接下来就是挨骂了,我铁定知道会卡,但是没想到会那 ...

  2. [转]DevOps解决方案-腾讯云

    本文转自:https://cloud.tencent.com/solution/devops 什么是 DevOps?   DevOps 集文化理念.实践和工具于一身,可以提高企业高速交付应用程序和服务 ...

  3. easyui datagrid 动态改变行背景色

    /*根据查询条件查询调度单列表*/ function InitGrid(queryData) { $("#dg").datagrid({ loadMsg: "数据加载中, ...

  4. 推荐《Java编程思想》

    最近看了(美)Bruce Eckel 著<Java编程思想>,还没有看完,但是极力推荐.尤其是学完一遍基础之后,再看很有感觉.之前学习基础的时候就买了这本书,那时候也真心看不下去,包括现在 ...

  5. 环境配置问题: 关于IDEA配置tomcat

    1. 先下载并解压缩一个tomcat7 2.打开idea 3. -Xms256M -Xmx1024M -XX:PermSize=64M -XX:MaxPermSize=128M 关于热部署设置参考:  ...

  6. nginx命令(持续更新)

    关闭服务:nginx -s stop | service nginx stop 启动服务:nginx | service nginx start 重新加载配置文件:nginx -s reload |  ...

  7. Http升级到Https (本地测试,无须域名和认证)

    在之前的语音识别的项目中,一切都在本地进行得很顺利,然后把写的Demo部署到服务器上给老大看的时候,通过IP访问(http://192.168.145.170:8080这样的形式)时,从一开始就坏掉了 ...

  8. Hbuilder Webview调试+逍遥安卓模拟器

    软件版本: HBuilder : 9.0.2.201803061935 逍遥安卓:5.2.2 webview相当于一个浏览器的tab,通过在webview中修改,模拟器端会实时刷新效果.从而达到调试手 ...

  9. linux系统编程:自己动手写一个ls命令

    ls用于列举目录内容,要实现这个功能,毫无疑问,需要读取目录,涉及到两个api: opendir:DIR *opendir(const char *name), 传文件名,返回一个指针,指向目录序列 ...

  10. 使用ThinkPHP实现附件上传

    刚学的使用ThinkPHP框架简单上传附件(图片,文档,视频等文件) 首先需要了解tp框架中Upload.class.php(ThinkPHP/Library/Think/Upload,class,p ...