python中文档IO的读写
首先明确一点,现代计算机的操作系统都不允许程序直接操作磁盘的,所以读取文件和写入文件都是有操作系统提供的提供的接口完成的,每一种编程语言都会把操作系统提供的低级C接口封装起来方便使用,Python也不例外。python是怎么样读取文件的。
文件打开
f= open ('C:/Users/Administrator/Desktop/test.txt','r')
1、文件的读取
使用open语句进行文件的打开操作,括号里面指明文件的位置和阅读的模式,'r'只读,还是'w'写入.中间用逗号隔开,位置与模式分别使用引号。
文件打开成功,可以使用read()方法进行一次性全部读取到计算机内存中,并用一个字符串对象表示,
>>> f.read()
''
因为文件是空的,返回 ''
使用 read() 方法危险之处在于如果文件过大,计算机内存就会爆满,可以使用更加安全的方法。
read(size)表示每次最多读取size字节的内容
readline()表示每次读取一行的内容
readlines()表示一次读取所有内容并按行返回list
2、文件的写入
首先打开文件,指定写入模式:
f= open ('C:/Users/Administrator/Desktop/test.txt','w')
写入内容:
f.write('hello,world')
这是文本已经写人文件。
3、关闭文件
打开的文件对象会占用系统的资源,所以要进行关闭操作,另外操作系统同一时间能打开的文件数量也是有限的,及时关闭文件是良好的代码书写习惯。
f.close()
至此一个文件的读取、写入、关闭完成。
注意的是使用IO读写很可靠会发生错误,这是文件依旧打开但是使用close()会失去调用,为了保证无论是否出错我们都能正确的关闭文件,使用python中的try finally来实现。
try:
f = open('C:/Users/Administrator/Desktop/test.txt', 'r')
print(f.read())
finally:
if f:
f.close()
使用with
语句来自动帮我们调用close()
方法:
with open('C:/Users/Administrator/Desktop/test.txt
', 'r') as f:
print(f.read())
和try ... finally
是一样的,但是代码更佳简洁,并且不必调用f.close()
方法。
4、其他文件读取:
读取二进制文件:例如视频、图片,用'rb'
模式打开文件即可:
f = open('/Users/michael/test.jpg', 'rb')
读取非UTF-8编码的文本文件,需要给open()
函数传入encoding
参数:
f = open('/Users/michael/gbk.txt', 'r', encoding='gbk')
遇到有些编码不规范的文件,open()
函数还接收一个errors
参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略:
f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')
常见的文件打开模式:
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 r+ 打开一个文件用于读写。文件指针将会放在文件的开头。 rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
最后注意:
在Windows资源管理器中的文件地址位置使用的"\",但是在python中的读取时路径要使用"/"否则会出现错误。
根据廖老师的教程整理。
python中文档IO的读写的更多相关文章
- python学习笔记 IO 文件读写
读写文件是最常见的IO操作.python内置了读写文件的函数. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统完成的,现代操作系统不允许普通的程序直接对磁盘进行操作,所以, 读写 ...
- Java 调用python说明文档
Java 调用python说明文档 通过java调用python脚本主要如下三种方式: 1.直接执行python脚本: 2.执行python.py文件: 3.使用Runtime.getRuntime( ...
- python网络编程——IO多路复用之select
1 IO多路复用的概念 原生socket客户端在与服务端建立连接时,即服务端调用accept方法时是阻塞的,同时服务端和客户端在收发数据(调用recv.send.sendall)时也是阻塞的.原生so ...
- python中文资源大全
Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python 资源列 ...
- Python输入输出(IO)
程序会有输入和输出,输入可以从标准输入或是从一个文件读入数据,程序的输出可以以一种友好可读的方式(human-readable)打印出来,或是写进一个文件,而标准输入和标准输出(键盘和显示器)在程序的 ...
- Python中文字符的理解:str()、repr()、print
Python中文字符的理解:str().repr().print 字数1384 阅读4 评论0 喜欢0 都说Python人不把文字编码这块从头到尾.从古至今全研究通透的话是完全玩不转的.我终于深刻的理 ...
- python 网络编程 IO多路复用之epoll
python网络编程——IO多路复用之epoll 1.内核EPOLL模型讲解 此部分参考http://blog.csdn.net/mango_song/article/details/4264 ...
- Python文档记录
Beautiful Soup 4.2.0 文档 Python3网络爬虫开发实战 Python库-requests 文档 Selenium with Python中文翻译文档 http://www.te ...
- 【已解决】python中文字符乱码(GB2312,GBK,GB18030相关的问题)
http://againinput4.blog.163.com/blog/static/1727994912011111011432810/ [已解决]python中文字符乱码(GB2312,GB ...
随机推荐
- Qt-网易云音乐界面实现-2 红红的程序运行图标,和相似下方音乐条
被调出来出差了,这次出差可以说是非常不开心,这次出差也算给我自己提了个醒吧,那就是注意自己的精力,自己的口碑,和比人对自己的信任.具体内容如下 我们公司有一款硬件的设备的电路是外包给某个人来做的,这个 ...
- 初学者下载使用Python遇到的问题看它就行了
首先在python管网(www.python.org)中找到对应的版本与系统,以(window7系统64位python3.7.3为例) 打开电脑--打开浏览器--输入www.python.org--d ...
- lua字符串类型
Lua中字符串结构体的定义是: typedef union TString { L_Umaxalign dummy; /* ensures maximum alignment for strings ...
- 网页从url到网页展示到页面的流程
心血来潮整理的 https://mubu.com/doc/oLDc49lx39
- C程序员必读的 3 本书
C程序员必读的 3 本书 原创: Martin 老师 公众号:零基础零障碍学习C语言 勿用质疑,今天来看这篇文章的朋友都是准备学好C语言的朋友,大家想学好C语言的迫切性,就好比Martin老师等着元 ...
- 解决k8s出现pod服务一直处于ContainerCreating状态的问题的过程
参考于: https://blog.csdn.net/learner198461/article/details/78036854 https://liyang.pro/solve-k8s-pod-c ...
- netcore如何引用package?
netcore项目引用dll包,分如下三种: 1.引用网络包 从nuget获取,然后引入,使用命令:dotnet add package 包名 然后:dotnet restore 2.引用同解决方案的 ...
- HTML和JS自解码机制
1.HTML 如果用户的输入被嵌入到HTML代码中,会进行HTML解码 解码方式包括: 1.HTML实体编码: 假定下面onclick后面的内容是可控的 点击按钮 2.进制编码: 点击按钮 2.JS ...
- Python之并发编程-多进程
目录 一.multiprocessiong模块介绍 二.Process类的介绍 三.进一步介绍(守护进程.锁.队列.管道.事件等) 1.守护进程 2.锁(同步锁.互斥锁) 3.信号量(了解) 4.队列 ...
- 感谢Thunder团队
不知不觉中,团队开发的beta版本都已经结束.开发的路上我们一起解决了很多难题,相互帮助走到了现在. 首先我想感谢组长王航.认真负责合理分配任务,使得我们每次发布都可以顺利并且按时完成.感谢胡佑蓉,李 ...