• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
火磷
Memory will fade,but not notes.
博客园    首页    新随笔    联系   管理    订阅  订阅
python中的IO模块

1.简介

读写文件是常见的IO操作,python内置了读写文本的函数。

读写文件的模式描述如下:

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

2.读取文件

文本信息如下:

2.1读取文件的基本信息

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

2.2一次性读取

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

2.3多次读取

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

2.4按行读取

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

2.5file作为迭代器

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

2.6按行读取并存为list

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

2.7读取二进制文件

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

3.写入文件

3.1写入文件的基本信息

1 # 只写方式打开文件,写入文本
2 f = open('./writein.txt', 'w')
3 # 读取文件信息
4 print "文件名: ", f.name
5 print "是否已关闭 : ", f.closed
6 print "访问模式 : ", f.mode
7 print "末尾是否强制加空格 : ", f.softspace
8 # 关闭文件
9 f.close()

3.2多种写入

 1 # 只写方式打开文件,写入文本
 2 f = open('./writein.txt', 'w')
 3 # 写入文本
 4 f.write('line one')
 5 f.close()
 6 
 7 # 只写方式打开文件,以序列方式写入
 8 f = open('./writein.txt', 'w')
 9 contentList = ['line one \n', 'line two \n', '中文测试 \n']
10 # 写入序列
11 f.writelines(contentList)
12 f.close()

4.其他函数 file.tell() 、file.seek(offset,[],whence)

 1 # 以读写方式打开文件,以序列方式写入
 2 f = open('./writein.txt', 'w+')
 3 contentList = ['line one \n', 'line two \n', '中文测试 \n']
 4 # 写入序列
 5 f.writelines(contentList)
 6 # 指针位置:file.tell()
 7 print '写入后指针所在位置:', f.tell()
 8 # 指针偏移:file.seek(offset[, whence])
 9 # 前者为偏移量,后者为指针位置(默认0表示初始位置,1表示当前位置,2表示末尾位置)
10 f.seek(0)
11 print '偏移后指针所在位置:', f.tell()
12 print '数据:\n', f.read()
13 f.close()

5.使用with语句配合IO操作

1 with open('/path/to/file', 'r') as f:
2       print f.read()

注:该种方式可以自动调用close()方法,避免出错!!!

 

posted on 2017-11-06 16:49  火磷  阅读(7070)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3