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 ...
随机推荐
- Zigbee系列(路由机制)
参考文档: ug103-02-fundamentals-zigbee.pdf section4 zigbe routing concepts docs-05-3474-21-0csg-zigbee-s ...
- Vue随性小笔记
1 前端MVC 和 后端MVC不同: 可以看出前端MVC其实为了解决前端复杂js模块化的问题,从后端MVC的V分离出来的 2 MVC / MVP / MVVM 三者区别 Model View ...
- 执行caffe的draw_net.py出现“GraphViz's executable "dot" not found”的解决方法
控制台输入如下指令画网络图: python ../../../python/draw_net.py train.prototxt train.png --rankdir=TB (Top-Bottom形 ...
- junit测试类防止事务回滚-工作心得
本随笔文章,由个人博客(鸟不拉屎)转移至博客园 发布时间: 2018 年 12 月 06 日 原地址:https://niaobulashi.com/archives/junit-test-rollb ...
- 零基础学python之构建web应用(入门级)
构建一个web应用 前面的学习回顾: IDLE是Python内置的IDE,用来试验和执行Python代码,可以是单语句代码段,也可以是文本编辑器中的多语句程序. 四个内置数据结构:列表.字典.集合和元 ...
- python多线程创建与使用(转)
原文:http://codingpy.com/article/python-201-a-tutorial-on-threads/ 创建多线程 创建多线程主要有2种方式. 使用threading.Thr ...
- 记一次RMI的调用数据失误
这两天在测试一个Spring RMI接口的时候,出现了个奇怪的问题.Server端返回的数据,到了客户端出现了属性丢失的情况. 类继承体系 .客户端里面定义在ClassA中的属性全部为null. 分析 ...
- Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第2节: FastThreadLocal的set方法
Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 第二节: FastThreadLocal的set方法 上一小节我们学习了FastThreadLocal的创建和 ...
- 为什么每次进入命令都要重新source /etc/profile 才能生效?
https://segmentfault.com/q/1010000005981201
- R语言安装R package的2种方法
http://www.cnblogs.com/emanlee/archive/2012/12/05/2803606.html