文件内建函数open()和 file()

文件内建函数open()和 file()
作为打开文件之门的"钥匙", 内建函数 open() [以及 file() ]提供了初始化输入/输出(I/O)
操作的通用接口. open() 内建函数成功打开文件后时候会返回一个文件对象, 否则引发一个错误.
当操作失败, Python 会产生一个 IOError 异常 - 我们会在下一章讨论错误和异常的处理. 内建函
数 open() 的基本语法是:
file_object = open(file_name, access_mode=‘r‘, buffering=-1)
file_name 是包含要打开的文件名字的字符串, 它可以是相对路径或者绝对路径. 可选变量
access_mode 也是一个字符串, 代表文件打开的模式. 通常, 文件使用模式 ‘r‘, ‘w‘, 或是 ‘a‘
模式来打开, 分别代表读取, 写入和追加. 还有个 ‘U‘ 模式, 代表通用换行符支持(见下).
使用 ‘r‘ 或 ‘U‘ 模式打开的文件必须是已经存在的. 使用 ‘w‘ 模式打开的文件若存在则首
先清空, 然后(重新)创建. 以 ‘a‘ 模式打开的文件是为追加数据作准备的, 所有写入的数据都将
追加到文件的末尾. 即使你 seek 到了其它的地方. 如果文件不存在, 将被自动创建, 类似以 ‘w‘
模式打开文件. 如果你是一个 C 程序员, 就会发现这些也是 C 库函数 fopen() 中使用的模式.
其它 fopen() 支持的模式也可以工作在 Python 的 open() 下. 包括 ‘+‘ 代表可读可写, ‘b‘
代表二进制模式访问. 关于 ‘b‘ 有一点需要说明, 对于所有 POSIX 兼容的 Unix 系统(包括
Linux)来说, ‘b‘是可由可无的, 因为它们把所有的文件当作二进制文件, 包括文本文件. 下面是
从 Linux 手册的 fopen() 函数使用中摘录的一段, Python 语言中的 open() 函数就是从它衍生
出的:
指示文件打开模式的字符串中也可以包含字符 "b" , 但它不能做为第一个字符出现.这样做的
目的是为了严格地满足 ANSI C3.159-1989 (即 ANSI C)中的规定; 事实上它没有任何效果, 所有
POSIX 兼容系统, 包括 Linux , 都会忽略 "b" (其它系统可能会区分文本文件和二进制文件, 如果
你要处理一个二进制文件, 并希望你的程序可以移植到其它非 Unix 的环境中, 加上"b" 会是不错的
主意)。
你可以在表 9.1 中找到关于文件访问模式的详细列表, 包括 ‘b‘ 的使用 - 如果你选择使用
它的话. 如果没有给定 access_mode , 它将自动采用默认值 ‘r‘ .
另外一个可选参数 buffering 用于指示访问文件所采用的缓冲方式. 其中 0 表示不缓冲, 1
表示只缓冲一行数据, 任何其它大于 1 的值代表使用给定值作为缓冲区大小. 不提供该参数或者
给定负值代表使用系统默认缓冲机制, 既对任何类电报机( tty )设备使用行缓冲, 其它设备使用正
常缓冲. 一般情况下使用系统默认方式即可.
表 9.1   文件对象的访问模式

文件模式     操作
r                  以读方式打开
rU 或 Ua      以读方式打开, 同时提供通用换行符支持 (PEP 278)
w                  以写方式打开 (必要时清空)
a                   以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+                  以读写模式打开
w+                 以读写模式打开 (参见 w )
a+                 以读写模式打开 (参见 a )
rb                  以二进制读模式打开
wb                 以二进制写模式打开 (参见 w )
ab                 以二进制追加模式打开 (参见 a )
rb+                以二进制读写模式打开 (参见 r+ )
wb+               以二进制读写模式打开 (参见 w+ )
ab+               以二进制读写模式打开 (参见 a+ )
a.                  Python 2.3 中新增

这里是一些打开文件的例子:
fp = open(‘/etc/motd‘) # 以读方式打开
fp = open(‘test‘, ‘w‘) # 以写方式打开
fp = open(‘data‘, ‘r+‘) # 以读写方式打开
fp = open(r‘c:\io.sys‘, ‘rb‘) # 以二进制读模式打开

9.2.1
工厂函数 file()
在 Python 2.2 中,类型和类被统一了起来,这时,加入了内建函数 file(). 当时, 很多的内
建类型没有对应的内建函数来创建对象的实例。例如 dict(), bool(), file(), 等等, 然而,另一
些却有对应的内建函数, 例如 list(), str(), 等等.
open() 和 file() 函数具有相同的功能, 可以任意替换.
您所看到任何使用 open() 的地方, 都可以使用 file() 替换它.
可以预见, 在 将来的 Python 版本中, open() 和 file() 函数会同时存在, 完成相同的功能.
一般说来, 我们建议使用 open() 来读写文件, 在您想说明您在处理文件对象时使用 file() , 例
如 if instance(f, file)

时间: 2024-11-03 21:56:17

文件内建函数open()和 file()的相关文章

零基础学python-2.17 文件、open()、file()

今天我们来说说文件,以及跟文件有关的内建函数open和file 首先我们在python的根目录下建一个名为"123"的txt文本文件 文件里面我们输入一些文本 我们把新建文件与源代码都放到python根目录下面 下面我们来看看代码: handler=open("123.txt")#由于把文件跟源代码建立在python的根目录, #所以这里的路径只需打名字即可 for eachLine in handler: print(eachLine,end='') handle

NFS中小企业常见的网络文件系统服务(network file system)

NFS中小企业常见的网络文件系统服务(network file system) RPC服务最主要的功能就是记录每个NFS功能所对应的端口号,并在NFS客服端请求时将该端口和功能对应的信息传递个给请求数据的NFS客服端 流程: 1,先开启RPC服务 2,再启动NFS服务 3,NFS服务向RPC注册启动的端口 4,客服请求NFS服务 5,RPC返回端口给客服端 环境搭建: 服务端为 nfsserver  客服端为 nfsclient NFS服务需要安装的软件包: yum install nfs-ut

【转】 grep 文件报错 “Binary file ... matches”

原文链接 http://blog.csdn.net/yaochunnian/article/details/7261006 grep 文件报错 “Binary file ... matches” 原因:文件为binary文件 解决:strings vers.log.2010-03-09 | grep -i ‘mezimedia’ 或者 grep -a -i ‘mezimedia’ vers.log.2010-03-09 grep命令是linux下的行过滤工具,其参数繁多,下面就一一介绍个个参数的

sqlserver错误"试图扩大物理文件时,MODIFY FILE 遇到操作系统错误 112(磁盘空间不足。)。"处理

正常还原的时候报错: Microsoft SQL-DMO (ODBC SQLState: 42000)---------------------------试图扩大物理文件时,MODIFY FILE 遇到操作系统错误 112(磁盘空间不足.).未能创建一个或多个文件.请考虑使用 WITH MOVE 选项来标识有效位置.RESTORE DATABASE 操作异常终止. 但硬盘空间很足够! -------------------------------------------------------

基于Metronic的Bootstrap开发框架经验总结(5)--Bootstrap文件上传插件File Input的使用

Bootstrap文件上传插件File Input是一个不错的文件上传控件,但是搜索使用到的案例不多,使用的时候,也是一步一个脚印一样摸着石头过河,这个控件在界面呈现上,叫我之前使用过的Uploadify 好看一些,功能也强大些,本文主要基于我自己的框架代码案例,介绍其中文件上传插件File Input的使用.关于Uploadify的控件介绍,可以参考我之前的随笔介绍<基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用>. 1.文件上传插件File In

php读取网络文件curl,fsockopen,file_get_contents,file,fopen几种方法

php读取网络文件 curl, fsockopen ,file_get_contents 几个方法的效率对比 最近需要获取别人网站上的音乐数据.用了file_get_contents函数,但是总是会遇到获取失败的问题,尽管按照手册中的 例子设置了超时,可多数时候不会奏效: $config['context'] = stream_context_create(array(‘http’ => array(‘method’ => “GET”,   ’timeout’ => 5//这个超时时间不

Android数据存储——文件读写操作(File)

Android文件读写操作 一.文件的基本操作 Android中可以在设备本身的存储设备或外接的存储设备中创建用于保存数据的文件.在默认状态下,文件是不能在不同程序间共享的. 当用户卸载您的应用程序时,这些文件删除. 文件存储数据可以通过openFileOutput方法打开一个文件(如果这个)文件不存在就自动创建这个文件),通过load方法来获取文件中的 数据,通过deleteFile方法删除一个指定的文件. 1,常用方法介绍: File是通过FileInputStream和FileOutput

封装读取文件路径的类File.h+File.m

1 #import <Foundation/Foundation.h> 2 3 #define FILE_PATH(filePath) [File path:(filePath)] 4 #define ROOT_PATH [File rootPath] 5 #define BUNDLE_PATH(fileName) [File bundleSource:(fileName)] 6 #define CREATE_FOLDER(folderPath) [File createFolder:(fol

【翻译自mos文章】在unix/linux中使用文件描述符(File Descriptors)来找回被删掉的文件(数据文件or redo log)

在unix/linux中使用文件描述符(File Descriptors)来找回被删掉的文件(数据文件or redo log) 参考原文: Retrieve deleted files on Unix / Linux using File Descriptors (Doc ID 444749.1) 适用于: Oracle Database - Enterprise Edition - Version 8.1.7.0 to 11.2.0.3 [Release 8.1.7 to 11.2] Linu