• 文件的读写和 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') # 以二进制读模式打开

     常用的文件读取的函数

    f.read(),f.readline(),f.readlines(),f.write(),f.tell(),f.seek(offset,where),f.close().

    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)

  • 相关阅读:
    程序员修神之路--容器技术为什么会这么流行
    程序员修神之路--kubernetes是微服务发展的必然产物
    程序员修神之路--有状态的服务其实可以做更多的事情
    程序员修神之路--要想做好微服务架构,并非易事!
    程序员修神之路--为什么有了SOA,我们还用微服务?
    程序员过关斩将--数据库的乐观锁和悲观锁并非真实的锁
    程序员修神之路--设计一套RPC框架并非易事
    计算机的诞生和简史
    记一次Linux修改MySQL配置不生效的问题
    为什么大多数公司都不重视技术?
  • 原文地址:https://www.cnblogs.com/mycats/p/4216862.html
Copyright © 2020-2023  润新知