标签:
python 文件对象
python 中文件对象就是用来操作普通文件的句柄,使用文件对象可以对文件进行一系列的增删改查等操作。
文件内置函数 open()
内建函数 open() 提供了初始化输入/输出操作的通用接口。open() 内建函数成功打开文件后会返回一个文件对象,否则会引发一个 IOError 异常。open() 的基本语法是:
file_object = open(file_name, access_mode=‘r‘, buffering=-1)
file_object
返回的文件对象。
file_name
要打开的文件名字的字符串,可以是相对路径或者绝对路径。
access_mode(可选)
文件打开的模式。
文件模式 | 操作 |
r | 以读方式打开 |
rU/Ua | 以读的方式打开,同时提供通用换行符支持 |
w | 以写方式打开 |
a | 以追加模式打开 |
r+ | 以读写模式打开 |
w+ | 以读写模式打开 |
a+ | 以读写模式打开 |
rb | 以二进制读模式打开 |
wb | 以二进制写模式打开 |
ab | 以二进制追加模式打开 |
rb+ | 以二进制读写模式打开 |
wb+ | 以二进制读写模式打开 |
ab+ | 以二进制读写模式打开 |
buffering(可选)
文件所采用的缓冲方式,0 表示不缓冲,1 表示只缓冲一行数据,任何其他大于 1 的值代码使用给定值代表使用给定值作为缓冲器大小。不提供该函数或者给定负值代表使用系统默认缓冲机制。
1
使用 ‘r‘ 或 ‘U‘ 模式打开的文件必须是已经存在的. 使用 ‘w‘ 模式打开的文件若存在则首
先清空, 然后(重新)创建. 以 ‘a‘ 模式打开的文件是为追加数据作准备的, 所有写入的数据都将
追加到文件的末尾. 即使你 seek 到了其它的地方. 如果文件不存在, 将被自动创建, 类似以 ‘w‘
模式打开文件.
指示文件打开模式的字符串中也可以包含字符 "b" , 但它不能做为第一个字符出现.这样做的
目的是为了严格地满足ANSI C3.159-1989 (即 ANSI C)中的规定; 事实上它没有任何效果, 所有
POSIX 兼容系统, 包括 Linux , 都会忽略 "b" (其它系统可能会区分文本文件和二进制文件, 如果
你要处理一个二进制文件, 并希望你的程序可以移植到其它非Unix 的环境中, 加上"b" 会是不错的
主意)。
你可以在表 9.1 中找到关于文件访问模式的详细列表, 包括 ‘b‘ 的使用 - 如果你选择使用
它的话. 如果没有给定 access_mode , 它将自动采用默认值 ‘r‘ .
这里是一些打开文件的例子:
fp = open(‘/etc/motd‘) # 以读方式打开
fp = open(‘test‘, ‘w‘) # 以写方式打开
fp = open(‘data‘, ‘r+‘) # 以读写方式打开
fp = open(r‘c:\io.sys‘, ‘rb‘) # 以二进制读模式打开
通用换行符支持(UNS)
在下一个核心笔记中, 我们将介绍如何使用 os 模块的一些属性来帮助你在不同平台下访问文
件, 不同平台用来表示行结束的符号是不同的, 例如 \n, \r, 或者 \r\n . 所以, Python 的解释
器也要处理这样的任务, 特别是在导入模块时分外重要。 你难道不希望 Python 用相同的方式处理
所有文件吗?
这就是 UNS 的关键所在, 作为 PEP 278 的结果, Python 2.3 引入了UNS. 当你使用 ‘U‘ 标志
打开文件的时候, 所有的行分割符(或行结束符, 无论它原来是什么)通过 Python 的输入方法(例
如 read*() )返回时都会被替换为换行符NEWLINE(\n). (‘rU‘ 模式也支持 ‘rb‘ 选项) . 这个特性
还支持包含不同类型行结束符的文件. 文件对象的newlines 属性会记录它曾“看到的”文件的行结
束符.
如果文件刚被打开, 程序还没有遇到行结束符, 那么文件的newlines 为 None .在第一行被读
取后, 它被设置为第一行的结束符. 如果遇到其它类型的行结束符, 文件的newlines 会成为一个
包含每种格式的元组. 注意 UNS 只用于读取文本文件. 没有对应的处理文件输出的方法.
在编译 Python 的时候,UNS 默认是打开的. 如果你不需要这个特性, 在运行configure 脚本
时,你可以使用 --without-universal-newlines 开关关闭它. 如果你非要自己处理行结束符, 请
查阅核心笔记,使用 os 模块的相关属性.
标签:
原文地址:http://www.cnblogs.com/mydevops/p/5356350.html