Python open()函数用法详解_python中open的用法-程序员宅基地

技术标签: python  文件操作  IT-编程语言-Python  

Python open()函数用法详解


哟,写bug呢??

Python open()函数用法详解

一、文件操作的流程:

#1. 打开文件,得到文件句柄并赋值给一个变量
#2. 通过句柄对文件进行操作
#3. 关闭文件

具体步骤如下:

f=open('test.txt',encoding='utf-8')   #打开文件
data=f.read()            #文件操作
print(data)
f.close()          #关闭文件

二、open()函数的具体用法:

open函数最常用的使用方法如下:文件句柄 = open('文件路径', '模式',编码方式)。

1、关于文件路径

#文件路径:主要有两种,一种是使用相对路径,想上面的例子就是使用相对路径。
#另外一种就是绝对路径,像' C:/Users/shu/Desktop/python/test.txt'

2、关于打开模式:

#r   以只读方式打开文件。这是默认模式。文件必须存在,不存在抛出错误
#rb  以二进制格式打开一个文件用于只读。
#r+  打开一个文件用于读写。文件指针将会放在文件的开头。读完就追加。
#w   打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
#w+  打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
#a   打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
#a+  打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
#b   已二进制格式进行读写,不能单独使用

注:后面有带b的方式,不需要考虑编码方式。有带+号的,则可读可写,不过它们之间还是有区别的

 

下面附上各种方法的代码,便于更深刻理解各种模式

#原来文件内容是:
自恐多情损梵行,入山又怕误倾城.世间安得双全法,不负如来不负卿.

1.只读模式r:
f=open('test.txt','r')
data=f.read()
print(data)           #自恐多情损梵行,入山又怕误倾城.世间安得双全法,不负如来不负卿.
f.close() 

2.只写模式,w  (存在会覆盖原来内容)
f=open('test.txt','w')
f.write('作者:仓央嘉措')
f.close()              #写完后原来的内容全都不见了,只剩下'作者:仓央嘉措'.

3、追加模式,a
f=open('test.txt','a')
f.write('作者:仓央嘉措')
f.close()              #写完内容如下:自恐多情损梵行,入山又怕误倾城.世间安得双全法,不负如来不负卿.作者:仓央嘉措

4、以r+模式打开
f=open('test.txt','r+')
f.write('作者:仓央嘉措')
print(f.read())         # 输出为" ,入山又怕误倾城.世间安得双全法,不负如来不负卿."         
f.close()            
#写完内容为 “ 作者:仓央嘉措,入山又怕误倾城.世间安得双全法,不负如来不负卿.”
#为什么输出和写完内容会这样呢? 解释这个只要知道紧跟光标的位置就可以明白了。
  首先,以r方式打开光标都会在最开始的位置,这时候执行f.write('作者:仓央嘉措') ,这时候就把原来的‘自恐多情损梵行’覆盖了。这时候光标移动到','之前,
紧接着进行print(f.read())。就会把后面剩下的文本内容打印出来。所以输出就是:" ,入山又怕误倾城.世间安得双全法,不负如来不负卿." 整个程序完成后,
整个文本内容就成了;“ 作者:仓央嘉措,入山又怕误倾城.世间安得双全法,不负如来不负卿.”(光标!!

 

 3、关于编码方式:

#1.win系统默认是gbk编码的,所以桌面生成的TXT之类的都是gbk编码的。
#2.出现乱码正常都是原文件的编码方式和打开指定的编码不一致所致

 

 三、关闭文件:

  不要小看这一步,因为我们读取文件是把文科读取到内存中的,如果我们没关闭它,它就会一直占用系统资源,而且还可能导致其他不安全隐患。还有一种方法可以让我们不用去特意关注关闭文件。那就是 with open()

 

with open('test.txt','a+') as f:
    f.write('作者:仓央嘉措')
    print(f.read())
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011537073/article/details/86484771

智能推荐

Linux用户管理详解_linux登录qq是什么意思-程序员宅基地

文章浏览阅读448次。Linux用户管理用户基本概念什么是用户用户指的是能够正常登录Linux或Windows系统,比如:登录QQ的用户、登入王者荣耀的用户、等等[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nz1edsjq-1626145230283)(C:\Users\李开开\AppData\Roaming\Typora\typora-user-images\image-20210712171546940.png)]为什么需要用户系统上的每一个进程(运行的程序),都_linux登录qq是什么意思

Unity中协程里Animator获取状态一些笔记_getanimatortransitioninfo-程序员宅基地

文章浏览阅读4.5k次,点赞4次,收藏7次。最近用Animator获取状态各种获取错误,所以记一下笔记Animator中可以获取三种不同的状态:GetCurrentAnimatorStateInfo 获取正确的状态机状态GetNextAnimatorStateInfo 获取下一个状态机的状态GetAnimatorTransitionInfo 获取状态机的过渡状态动画同步是在帧最前,而协程是在帧的最后调用。所以切换状态后在协程获取状..._getanimatortransitioninfo

LATEX 中参考文献顺序_spphys.bst-程序员宅基地

文章浏览阅读924次。\bibliography{report} % bibliography data in report.bib\bibliographystyle{unsrt} % makes bibtex use spphys.bstunsrt 表示按照引用的先后顺序进行排序_spphys.bst

Linux下部署maven-web项目,包括JDK安装、TOMCAT安装、MYSQL安装详细解释-程序员宅基地

文章浏览阅读335次。为什么80%的码农都做不了架构师?>>> ..._linux系统搭建maven+tomcat+mysql

effective stl 第18条: 避免使用vector<bool>-程序员宅基地

文章浏览阅读354次。vector不是容器,并且它不存储bool,因为他是按照位来存储的,即一个bool只占一个二进制位。假设有vector v;则&v[0]会引起编译错误。如果不使用&v[0]可以使用vector,否则,可以用deque 和bitset来替代_避免使用vector

Bug的严重程度(缺陷程度)有哪几种。。。。_bug严重程度-程序员宅基地

文章浏览阅读6.8k次,点赞2次,收藏20次。Bug程度分为四种,分别为:致命S0:致命缺陷是指会造成安全问题的各类缺陷。在测试中很少出现,一旦出现立即中止版本测试。系统崩溃,数据丢失,数据毁坏,无法运行等Bug。严重S1:是指可以引起易于纠正的异常情况,可能引起易于修复的故障或对产品外观造成难以接受的缺陷。不影响其他功能的情况下可以继续版本测试。功能和性能不能实现。 次要功能全部丧失。 功能遗漏等等。 一般S2:一般缺陷是指不影响产品的..._bug严重程度

随便推点

《iOS 9 开发指南》——第1章,第1.3节工欲善其事,必先利其器——搭建开发环境...-程序员宅基地

文章浏览阅读202次。本节书摘来自异步社区《iOS 9 开发指南》一书中的第1章,第1.3节工欲善其事,必先利其器——搭建开发环境,作者 管蕾,更多章节内容可以访问云栖社区“异步社区”公众号查看1.3 工欲善其事,必先利其器——搭建开发环境iOS 9 开发指南图片 2 知识点讲解:光盘:视频知识点第1章搭建开发环境.mp4学习iOS 9开发也离不开好的开发工具的帮助,如果使..._(1)下载完成后单击打开下载的“.dmg”格式文件,然后双击xcode文件开始安装。

iView 3.3.2 发布,基于 Vue.js 的企业级 UI 组件库-程序员宅基地

文章浏览阅读115次。开发四年只会写业务代码,分布式高并发都不会还做程序员? iView 3.3.2 发布了,iView 是一套基于 Vue..._iview 3.2.2

详解not in与not exists的区别与用法(not in的性能并不差!)-程序员宅基地

文章浏览阅读93次。2019独角兽企业重金招聘Python工程师标准>>> ..._predicate not in查询

SpringBoot整合Spring Data JPA、MySQL、Druid并使用Mockito实现单元测试_spring jpa mock-程序员宅基地

文章浏览阅读4.7k次,点赞3次,收藏7次。SpringBoot整合Spring Data JPA、MySQL、Druid并使用Mockito实现单元测试_spring jpa mock

java 解析excel金额_java解析Excel(xls、xlsx两种格式)-程序员宅基地

文章浏览阅读441次。package poi;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.LinkedHashMap;import j..._java getcellformatvalue

50个漂亮免费的 WordPress 主题(下)_wordpressbo'ke 免费-程序员宅基地

文章浏览阅读170次。50个漂亮免费的 WordPress 主题(上)Minimatica( Demo | Download )Placeholder( Demo | Download )Navly( Demo | Download )Cobera( Demo | Download )The Blog( Demo | Download )Gabi..._wordpressbo'ke 免费

推荐文章

热门文章

相关标签