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模块的更多相关文章

  1. python中日志logging模块的性能及多进程详解

    python中日志logging模块的性能及多进程详解 使用Python来写后台任务时,时常需要使用输出日志来记录程序运行的状态,并在发生错误时将错误的详细信息保存下来,以别调试和分析.Python的 ...

  2. Python中的random模块,来自于Capricorn的实验室

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  3. Python中的logging模块

    http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...

  4. Python中的random模块

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  5. 浅析Python中的struct模块

    最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言 ...

  6. python中的StringIO模块

    python中的StringIO模块 标签:python StringIO 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的,只有一个StringIO类,所以它的可用方法都在类中.此类中的大部分 ...

  7. python中的select模块

    介绍: Python中的select模块专注于I/O多路复用,提供了select  poll  epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kqu ...

  8. Python中的re模块--正则表达式

    Python中的re模块--正则表达式 使用match从字符串开头匹配 以匹配国内手机号为例,通常手机号为11位,以1开头.大概是这样13509094747,(这个号码是我随便写的,请不要拨打),我们 ...

  9. python中的shutil模块

    目录 python中的shutil模块 目录和文件操作 归档操作 python中的shutil模块 shutil模块对文件和文件集合提供了许多高级操作,特别是提供了支持文件复制和删除的函数. 目录和文 ...

随机推荐

  1. NOIP2018退役祭

    退役感受 在写下这个标题的时候,我的心情是复杂的,无非就是感觉像对一位将要赶往战场的士兵说:"你的战争已经输掉了." 退役了,没有什么好说的.无论再怎么抱怨这题出的真烂也无法改变了 ...

  2. 【Ruby】【变量】

    知识点[Ruby 中$开头的全局变量.内部变量.隐藏变量介绍] Ruby 中充满了一系列的隐藏变量,我们可以从这些预定义的全局变量中获取一些有意思的信息. 全局进程变量 $$ 表示当前运行的 ruby ...

  3. 项目Alpha冲刺——代码规范、冲刺任务与计划

    作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Alpha冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综合评估及可视化分析平台 这个作业的 ...

  4. 解決 Android Studio 不停 Indexing 的問題(Updating Indices: Indexing paused due to batch update)

    遇到這個問題通常是 IDE 更新後,或是反覆使用 Android Studio 開啟其他專案所導致,解決方法其實非常簡單喔! 点击 這個選項的功用是「清除 IDE 暫存並重啟」,沒錯,會出現上述情形的 ...

  5. python 拷贝文件

    使用绝对目录: import os import shutil shutil.copyfile("/opt/test/update.tar.gz","/opt/updat ...

  6. Sqlserver中分页,2012后支持offset + fetch,2012之前用rownum嵌套查询

    今天发现原先用的sql offset fetch好用,换了一个DB就歇菜 歇菜截图 比较了一下,是数据库版本的问题 一个是13,一个是10 版本低的不支持用offset + fetch 进行分页,ms ...

  7. 如何在python中调用C语言代码

    1.使用C扩展CPython还为开发者实现了一个有趣的特性,使用Python可以轻松调用C代码 开发者有三种方法可以在自己的Python代码中来调用C编写的函数-ctypes,SWIG,Python/ ...

  8. leecode第四十三题(字符串相乘)

    class Solution { public: string multiply(string num1, string num2) { ";//特殊情况 ] == ] == ') retu ...

  9. poi实现百万级数据导出

    注意使用 SXSSFWorkbook 此类在构造表格和处理行高的时候效率极高,刚开始时我使用的 XSSFWorkbook 就出现构造表格效率极低,一万行基本需要3秒左右,那当导出百万级数据就慢的要死啦 ...

  10. [MySQL]典型的行列转换

    列变成行 测试数据库数据样式: 应用的sql语句: SELECT TM,NAME,SUM(GE) AS 'GE',SUM(GD) AS 'GD',SUM(CT) AS 'CT',SUM(NUM) AS ...