简介

使用python的过程中肯定少不了读取文件的操作,

传统的形式是使用 直接打开、然后在操作、然后再关闭,

这样代码量稍微大些不说,一旦在操作步骤中出现报错,则无法进行文件的关闭;

案例一(读取)

首先创建一个我们要读写的txt文件

txt内容如下:

z天赐复习文件读写
博客园地址:https://www.cnblogs.com/ztcbug/

一、读取文件 基本实现

f = open('test001.txt','r',encoding='utf-8')  #open 是打开的意思,()中是要打开的文件路径 'r'是只读的方式打开,打开后赋值给f,如果读取文件有中文,encoding = utf-8是编码格式
print(f.read()) #read是读取的意思,f,read() 是读取f里的所有数据,然后print输出出来
f.close() #读取后,然后再把打开的f 给关闭,close()是关闭的意思,切记一定要关闭

---------------------------------------------------------------------------------------------------------------------------------------------------------------------
返回结果如下

z天赐复习文件读写
博客园地址:https://www.cnblogs.com/ztcbug/

 

这样的缺点是如果我们在关闭文件前出现了程序报错,那么打开后的文件就没有进行关闭

二、读取文件 中级实现

try:       #首先try一下,如果程序打开以及在打开后读取一系列操作后有报错,则不中断程序
f = open('test001.txt','r',encoding='utf-8')
file = f.read()
print(file)
finally: #无论try中的程序是否存在报错,则都执行下面的关闭
if f: #判断下f是否打开了,如果没打开则不需要关闭,打开了则关闭
f.close()

---------------------------------------------------------------------------------------------------------------------------------------------------------------------
返回结果如下

z天赐复习文件读写
博客园地址:https://www.cnblogs.com/ztcbug/

可以看到这次对基本实现进行了优化,无论是否报错,我们都对打开后的文件进行了关闭

三、读取文件 终极实现

上面那种虽然好,但是代码太不简洁了,我们可以用with open的方式来写

with open('test001.txt','r',encoding='utf-8') as f:
file = f.read()
print(file)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------
返回结果如下

z天赐复习文件读写
博客园地址:https://www.cnblogs.com/ztcbug/

案例二(写入)

一、写入文件 基本实现

还是用咱们刚才那个文件,刚才那个文件里的内容是 :

z天赐复习文件读写
博客园地址:https://www.cnblogs.com/ztcbug/

此时我们重新给这个文件 写入数据

f = open('test001.txt','w',encoding='utf-8') #open 打开要写入的文件,'w'就是写入的意思,如果有中文encoding进行编码
f.write('今天北京的天气非常好!!!!') #write是写入的意思,将()中的内容写入到f文件里
f.close() #写入完进行关闭

然后此时我们去看看 test001.txt  这个文件中的内容

写入成功

一、写入文件终极实现

with open('test001.txt','w',encoding='utf-8') as f: #使用with方法
f.write('今天去吃个黄焖鸡米饭!!!!') # 直接写入

然后此时我们去看看 test001.txt  这个文件中的内容


 

最新文章

  1. C++ tinyXML使用
  2. noip2016 Day1T3
  3. Bzoj3144 [Hnoi2013]切糕
  4. 第五章 搭建 S3C6.410 开发板的 测试环境
  5. s1=s1+1与s1+=1的区别
  6. Unity中的协程是什么?
  7. setup 桌面化设置网卡
  8. git 使用钩子直接推送到工作目录
  9. [react native] Error loading page
  10. Matlab中unifrnd函数使用解析
  11. hive 配置mysql元数据库
  12. 网络流相关(拓扑)CodeForces 269C:Flawed Flow
  13. C++内置类型对象之间的转换
  14. 误mlogc.c:32:23: error: curl/curl.h: No such file or directory
  15. React——state
  16. phpExcel导入大数据量情况下内存溢出解决方案
  17. 使用Ajax+jQuery来实现前端收到的数据在console上显示+简单的主页设计与bootstrap插件实现图片轮播
  18. SpringBoot 出现Whitelabel Error Page 解决办法
  19. 解决Ubuntu Chrome浏览器很卡不响应的问题
  20. it面试技巧

热门文章

  1. SpringBoot 简易实现热搜邮件推送,妈妈再也不用担心我不了解国家大事了
  2. JUC多线程之ThreadPoolExecutor类任务执行流程
  3. Serverless 如何在阿里巴巴实现规模化落地?
  4. 洛谷3176 [HAOI2015]数字串拆分 (矩阵乘法+dp)
  5. xshell连接vmware系统完整版
  6. jenkins+allure中测试包括为空,没有数据
  7. IEEE754浮点数的转换
  8. vue如何监听数组的变化
  9. SpringBoot小知识点
  10. springboot读取配置文件中的信息