python中的IO模块
1.简介
读写文件是常见的IO操作,python内置了读写文本的函数。
读写文件的模式描述如下:
| 模式 | 描述 |
|---|---|
| r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
| rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
| r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
| rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
| w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
| wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
| w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
| wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
| a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
| ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
| a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
| ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
2.读取文件
文本信息如下:

2.1读取文件的基本信息
# 只读方式打开文本文件
f = open('./readout.txt', 'r')
# 读取文件信息
print "文件名: ", f.name
print "是否已关闭 : ", f.closed
print "访问模式 : ", f.mode
print "末尾是否强制加空格 : ", f.softspace
# 关闭文件
f.close()

2.2一次性读取
# 只读方式打开文本文件
f = open('./readout.txt', 'r')
# 一次性读取全部内容,不安全
print '一次性全部读取:\n', f.read()
f.close()

2.3多次读取
# 只读方式打开文本文件
f = open('./readout.txt', 'r')
# 文件长度
# print '文件长度:', len(f.read())
# 从文件的开头读取13个字节,超过文本长度则读取全部
print '第一次读取:\n', f.read(13)
# 继续读取4个字节
print '第二次读取:\n', f.read(4)
f.close()

2.4按行读取
# 只读方式打开文本文件
f = open('./readout.txt', 'r')
# 分行读取
print '读取第一行:\n', f.readline().strip()
print '读取第二行的4个字节:\n', f.readline(4)
f.close()

2.5file作为迭代器
# 只读方式打开文本文件
f = open('./readout.txt', 'r')
for index in range(3):
# file自身作为迭代器
line = f.next()
print line.strip()

2.6按行读取并存为list
# 只读方式打开文本文件
f = open('./readout.txt', 'r')
# 一次性读取所有行并且返回list
fileList = f.readlines()
# ['line one\n', 'line two\n', '\xe4\xb8\xad\xe6\x96\x87\xe6\xb5\x8b\xe8\xaf\x95']
print 'List列表:\n', fileList
for line in fileList:
# #去掉每行头尾空白
print line.strip()
f.close()

2.7读取二进制文件
# 打开二进制文件,例如图片、视频
f = open('./readpicture.jpg', 'rb')
print f.read()
f.close()

3.写入文件
3.1写入文件的基本信息
# 只写方式打开文件,写入文本
f = open('./writein.txt', 'w')
# 读取文件信息
print "文件名: ", f.name
print "是否已关闭 : ", f.closed
print "访问模式 : ", f.mode
print "末尾是否强制加空格 : ", f.softspace
# 关闭文件
f.close()
3.2多种写入
# 只写方式打开文件,写入文本
f = open('./writein.txt', 'w')
# 写入文本
f.write('line one')
f.close() # 只写方式打开文件,以序列方式写入
f = open('./writein.txt', 'w')
contentList = ['line one \n', 'line two \n', '中文测试 \n']
# 写入序列
f.writelines(contentList)
f.close()
4.其他函数 file.tell() 、file.seek(offset,[],whence)
# 以读写方式打开文件,以序列方式写入
f = open('./writein.txt', 'w+')
contentList = ['line one \n', 'line two \n', '中文测试 \n']
# 写入序列
f.writelines(contentList)
# 指针位置:file.tell()
print '写入后指针所在位置:', f.tell()
# 指针偏移:file.seek(offset[, whence])
# 前者为偏移量,后者为指针位置(默认0表示初始位置,1表示当前位置,2表示末尾位置)
f.seek(0)
print '偏移后指针所在位置:', f.tell()
print '数据:\n', f.read()
f.close()

5.使用with语句配合IO操作
with open('/path/to/file', 'r') as f:
print f.read()
注:该种方式可以自动调用close()方法,避免出错!!!
python中的IO模块的更多相关文章
- python中日志logging模块的性能及多进程详解
python中日志logging模块的性能及多进程详解 使用Python来写后台任务时,时常需要使用输出日志来记录程序运行的状态,并在发生错误时将错误的详细信息保存下来,以别调试和分析.Python的 ...
- Python中的random模块,来自于Capricorn的实验室
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- Python中的logging模块
http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...
- Python中的random模块
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- 浅析Python中的struct模块
最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言 ...
- python中的StringIO模块
python中的StringIO模块 标签:python StringIO 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的,只有一个StringIO类,所以它的可用方法都在类中.此类中的大部分 ...
- python中的select模块
介绍: Python中的select模块专注于I/O多路复用,提供了select poll epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kqu ...
- Python中的re模块--正则表达式
Python中的re模块--正则表达式 使用match从字符串开头匹配 以匹配国内手机号为例,通常手机号为11位,以1开头.大概是这样13509094747,(这个号码是我随便写的,请不要拨打),我们 ...
- python中的shutil模块
目录 python中的shutil模块 目录和文件操作 归档操作 python中的shutil模块 shutil模块对文件和文件集合提供了许多高级操作,特别是提供了支持文件复制和删除的函数. 目录和文 ...
随机推荐
- Leetcode121-Best Time to Buy and Sell Stock I - Easy
I Say you have an array for which the ith element is the price of a given stock on day i. If you wer ...
- Tomat和JDK安装配置
昨天重装了一下系统,升级成了win10,原先配置好的jdk和tomcat信息都没有了,所以重新配置一下,做一个小记录 首先去官网下载java JDK和Tomcat,这个不提了,下载之后安装,安装完毕后 ...
- (一)PHP简介
什么是 PHP? PHP 是 "PHP Hypertext Preprocessor" 的首字母缩略词 PHP 是一种被广泛使用的开源脚本语言 PHP 脚本在服务器上执行 PHP ...
- ERP系统知识笔记
中心思想: 1.不管哪一家的ERP系统,都是以“平衡供需”为目的.以计划为中心思想的,并将各管理职能作紧密的集成 2.手工管理方式下,对库存量的掌握是不完整的.手工方式下,我们的数据只有现存量,无法记 ...
- java开发手册(阿里巴巴)——编程规约(部分)
(一)命名风格 3. [强制]类名使用 UpperCamelCase 风格,但以下情形例外:DO / BO / DTO / VO / AO / PO / UID 等. 正例:MarcoPolo / U ...
- 字符串--C++系列
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够.字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是 ...
- Android application backup
警告 AndroidMenifest中application标签下android:allowBackup="true"时,会警告: Warning:On SDK version 2 ...
- 学习笔记22—PS小技巧
1.将图片四角变弧形:菜单-->选择-->平滑-->设置参数: 2.画曲线的方法是: 1)选择钢笔工具, 2)工具属性选择路径:用钢笔点下路径的起点,点下即松开鼠标:在下一个锚点,点 ...
- Codeforces 1077 F2 - Pictures with Kittens (hard version)
F2 - Pictures with Kittens (hard version) 思路: 单调队列优化dp 代码: #pragma GCC optimize(2) #pragma GCC optim ...
- HTML5-用canvas画布rotate字体旋转(中国象棋棋谱)。
一开始我们老师安排我做这个作业,在这个作业我遇到了一个很重大的问题就是,文字旋转这么旋转,我查了很多资料. 1发现绘画正方形,使他正方形中心原点旋转非常容易理解.(我相信这个很多人看一下都会懂,) 1 ...