python读写文件
来源:互联网 发布:电脑自动按键软件 编辑:程序博客网 时间:2024/05/22 01:31
from http://blog.sina.com.cn/s/blog_8259d7090101by45.html
#***********
#文件对象不仅可以用来访问普通的磁盘文件, 而且也可以访问任何其它类型抽象层面上的"文件".
#随着你使用 Python 经验的增长. 您会遇到很多处理"类文件"对象的情况. 有很多这样的例子,
#例如实时地"打开一个URL"来读取 Web 页面,在另一个独立的进程中执行一个命令进行通讯, 就好
#像是两个同时打开的文件, 一个用于读取, 另个用于写入.
#
#内建函数 open() 返回一个文件对象, 对该文件进行后继相关的操作都要用到
#它. 还有大量的函数也会返回文件对象或是类文件( file-like )对象. 进行这
种抽象处理的主要原
#因是许多的输入/输出数据结构更趋向于使用通用的接口. 这样就可以在程序行为和实现上保持一
#致性. 甚至像 Unix 这样的操作系统把文件作为通信的底层架构接口. 请记住, 文件只是连续的字
#节序列. 数据的传输经常会用到字节流, 无论字节流是由单个字节还是大块数据组成.
#***********
#内建函数 open() [以及 file() ]提供了初始化输入/输出(I/O)
#操作的通用接口. open() 内建函数成功打开文件后时候会返回一个文件对象, 否则引发一个错误.
#当操作失败, Python 会产生一个 IOError 异常,内建函数 open() 的基本语法是:
#
#file_name 是包含要打开的文件名字的字符串, 它可以是相对路径或者绝对路径. 可选变量
#access_mode 也是一个字符串, 代表文件打开的模式. 通常, 文件使用模式 'r', 'w', 或是 'a'
#模式来打开, 分别代表读取, 写入和追加. 还有个 'U' 模式, 代表通用换行符支持
#
#使用 'r' 或 'U' 模式打开的文件必须是已经存在的. 使用 'w' 模式打开的文件若存在则首
#先清空, 然后(重新)创建. 以 'a' 模式打开的文件是为追加数据作准备的, 所有写入的数据都将
#追加到文件的末尾. 即使你 seek 到了其它的地方. 如果文件不存在, 将被自动创建, 类似以 'w'模式打开文件.
#如果没有给定 access_mode , 它将自动采用默认值 'r' .
#另外一个可选参数 buffering 用于指示访问文件所采用的缓冲方式. 其中 0 表示不缓冲, 1
#表示只缓冲一行数据, 任何其它大于 1 的值代表使用给定值作为缓冲区大小. 不提供该参数或者
#给定负值代表使用系统默认缓冲机制, 既对任何类电报机( tty )设备使用行缓冲, 其它设备使用正
#常缓冲. 一般情况下使用系统默认方式即可.
#文件对象的访问模式
#文件模式
#r
#rU 或 Ua
#w
#a
#r+
#w+
#a+
#rb
#wb
#ab
#rb+
#wb+
#ab+
#这里是一些打开文件的例子:
#fp = open('/etc/motd') # 以读方式打开
#fp = open('test', 'w') # 以写方式打开
#fp = open('data', 'r+') # 以读写方式打开
#fp = open(r'c:\io.sys', 'rb') # 以二进制读模式打开
###############
#open() 和 file() 函数具有相同的功能, 可以任意替换.任何使用 open() 的地方, 都可以使用 file() 替换它.
#一般说来, 建议使用 open() 来读写文件, 在处理文件对象时使用 file() , 例如 if instance(f, file) .
##############
#Python 2.3 引入了UNS. 当你使用 'U' 标志打开文件的时候, 所有的行分割符(或行结束符, 无论它原来是什么)通过 Python 的输入方法(例
#如 read*() )返回时都会被替换为换行符NEWLINE(\n). ('rU' 模式也支持 'rb' 选项) . 这个特性
#还支持包含不同类型行结束符的文件. 文件对象的newlines 属性会记录它曾“看到的”文件的行结束符.
#如果文件刚被打开, 程序还没有遇到行结束符, 那么文件的newlines 为 None .在第一行被读
#取后, 它被设置为第一行的结束符. 如果遇到其它类型的行结束符, 文件的newlines 会成为一个
#包含每种格式的元组. 注意 UNS 只用于读取文本文件. 没有对应的处理文件输出的方法.
#在编译 Python 的时候,UNS 默认是打开的. 如果你不需要这个特性, 在运行configure 脚本
#时,你可以使用 --without-universal-newlines 开关关闭它. 如果你非要自己处理行结束符, 请
#查阅核心笔记,使用 os 模块的相关属性.
#***********