9.Python之文件

来源:互联网 发布:好老板进销存软件 编辑:程序博客网 时间:2024/05/29 02:21

9.1 文件对象

  1. 文件的所有操作通过打开的一个文件对象或者类文件对象。
  2. 文件只是连续的字节序列;数据的传输是字节流。

9.2 open和file

  1. open() 内建函数成功打开文件后时候会返回一个文件对象, 否则引发一个错误,产生一个 IOError 异常.
  2. open继承C语言的fopen() access_mode,默认r
  3. 对于类Unix系统,文件都是二进制对待,因此b 参数可有可无,POSIX 兼容系统, 包括 Linux , 都会忽略 “b”,这里的open也继承这种态度。但是在win下,就要明显区分了。
  4. 另外一个可选参数 buffering 用于指示访问文件所采用的缓冲方式. 其中 0 表示不缓冲, 1
    表示只缓冲一行数据, 任何其它大于 1 的值代表使用给定值作为缓冲区大小. 不提供该参数或者
    给定负值代表使用系统默认缓冲机制。
  5. open() 和 file() 函数具有相同的功能, 可以任意替换. 任何使用 open() 的地方, 都可以使用 file() 替换它
>>> help(open)>>> print file.__doc__

通用换行符支持(UNS)
如果文件刚被打开, 程序还没有遇到行结束符, 那么文件的newlines 为 None .在第一行被读取后, 它被设置为第一行的结束符. 如果遇到其它类型的行结束符, 文件的newlines 会成为一个包含每种格式的元组.

9.3 read 和write

  1. read() 方法用来直接读取字节到字符串中, 最多读取给定数目个字节. 如果没有给定 size参数(默认值为 -1)或者 size 值为负, 文件将被读取直至末尾.
  2. readline() 方法读取打开文件的一行(读取下个行结束符之前的所有字节). 然后整行,包括行结束符(用户自己处理),作为字符串返回. 和 read() 相同, 它也有一个可选的 size 参数, 默认为 -1, 代表读至行结束符. 如果提供了该参数, 那么在超过size 个字节后会返回不完整的行.
  3. readlines() 方法并不像其它两个输入方法一样返回一个字符串. 它会读取所有(剩余的)行然后把它们作为一个字符串列表返回. 它的可选参数 sizhint 代表返回的最大字节大小. 如果它大于 0 , 那么返回的所有行应该大约有 sizhint 字节(可能稍微大于这个数字, 因为需要凑齐缓冲区大小).
  4. 高效地迭代文件的行: xreadlines 对象;file.xreadlines();for eachLine in file 代替它.

输出

  1. write() 它把含有文本数据或二进制数据块的字符串写入到文件中去
  2. writelines() 方法是针对列表的操作, 字符串列表作为参数, 将它们写入文件. 行结束符并不会被自动加入, 必要时,必须在调用writelines()前给每行结尾加上行结束符.

9.4 seek 和text

  1. 和fseek()雷同
  2. text()当前文件指针在文件中的位置 - 从文件起始算起, 单位为字节

9.5 close

  1. python支持引用计数减为0自动关闭。
  2. 用户自主关闭文件对象

9.6 其他func

  1. fileno() 返回打开文件的描述符,用于底层操作
  2. flush() 把内部缓冲区中的数据立刻写入文件
  3. isatty() 是一个布尔内建函数, 当文件是一个类 tty 设备时返回 True
  4. truncate() 方法将文件截取到当前文件指针位置或者到给定 size , 以字节为单位
  5. print 语句默认在输出内容末尾后加一个换行符, 而在语句后加一个逗号就可以避免这个行为.readline() 和 readlines() 函数不对行里的空白字符做任何处理, 所以你有必要加上逗号. 如果你省略逗号, 那么显示出的文本每行后会有两个换行符, 其中一个是输入是附带的, 另个是 print 语句自动添加的

9.7 文件属性

属性 描述 file.closed 文件是否关闭 file.encoding 文件编码 file.mode 文件的打开的模式 file.name 文件的名字 file.newlines None,换行符字符串或列表 file.softspace 一次输出加上一个空白


9.8 标准文件

继承于C的stdin, stdout, stderr, 通过sys导入模块来引用

函数 标准文件 print sys.stdout raw_input sys.stdin


9.9 argc & argv

继承于Cmain函数中的两个参数,python只有argv,argc隐藏为argv的长度

C Python 备注 argv sys.argv argc len(sys.argv) argv[0] sys.argv[0] 程序名

python参数解析:getopt/optparse

9.10 文件系统(os模块)

os模块负责处理大部分文件系统操作,对底层OS平台抽象,上层只需导入os模块即可。

函数 功能 mkfifo() 创建管道 mknod() 创建节点 remove()/unlink() 删除文件 rename()/renames() 重命名 stat() 文件信息 symlink() 创建符号链接 utime() 更新时间戳 tmpfile() 创建临时文件 walk() 目录下的所有文件名 chdir()/fchdir() 改变当前工作目录/通过一个文件描述符改变当前工作目录 chroot() 改变当前进程的根目录 listdir() 列出指定目录的文件 getcwd()/getcwdu() 返回当前工作目录/功能相同,返回一个 Unicode 对象 mkdir()/makedirs() 创建目录/创建多层目录 rmdir()/removedirs() 删除目录/删除多层目录 access() 检验权限模式 chmod() 改变权限模式 chown()/lchown() 改变 owner 和 group ID/功能相同, 但不会跟踪链接 umask() 设置默认权限模式 open() 底层的操作系统 open (对于文件, 使用标准的内建 open() 函数) read()/write() 根据文件描述符读取/写入数据 dup()/dup2() 复制文件描述符号/功能相同, 但是是复制到另一个文件描述符 makedev() 从 major 和 minor 设备号创建一个原始设备号 major() /minor() 从原始设备号获得 major/minor 设备号



os.path 模块

函数 功能 basename() 去掉目录路径, 返回文件名 dirname() 去掉文件名, 返回目录路径 join() 将分离的各部分组合成一个路径名 split() 返回 (dirname(), basename()) 元组 splitdrive() 返回 (drivename, pathname) 元组 splitext() 返回 (filename, extension) 元组 getatime() 返回最近访问时间 getctime() 返回文件创建时间 getmtime() 返回最近文件修改时间 getsize() 返回文件大小(以字节为单位) exists() 指定路径(文件或目录)是否存在 isabs() 指定路径是否为绝对路径 isdir() 指定路径是否存在且为一个目录 isfile() 指定路径是否存在且为一个文件 islink() 指定路径是否存在且为一个符号链接 ismount() 指定路径是否存在且为一个挂载点 samefile() 两个路径名是否指向同个文件

这些函数基本上是映射环境编程中底层API,这样就方便记忆了。另外这些调用需要加上os或os.path调用前缀限定。os其他于文件关系不大的功能此处省略

9.11 对象保存到文件

模块 介绍 anydbm dbhash/bsddb, dbm, gdbm, 以及 dumbdbm marshal 把 Python 对象直接保存到文件里,只处理简单对象,数字, 序列, 映射, 以及代码对象 pickle 把 Python 对象直接保存到文件里,可以处理递归对象, 被不同地方多次引用的对象, 以及用户定义的类和实例 cPickle pickle 的一个更快的 C 语言编译版本. shelve 以上三者的结合


9.12 文件相关模块

模块 简介 base64 提供二进制字符串和文本字符串间的编码/解码操作 binascii 提供二进制和ASCII 编码的二进制字符串间的编码/解码操作 bz2a 访问 BZ2 格式的压缩文件 csva 访问 csv 文件(逗号分隔文件) filecmpb 用于比较目录和文件 fileinput 提供多个文本文件的行迭代器 getopt/optparsea 提供了命令行参数的解析/处理 glob/fnmatch 提供 Unix 样式的通配符匹配的功能 gzip/zlib 读写 GNU zip( gzip) 文件(压缩需要 zlib 模块) shutil 提供高级文件访问功能 c/StringIO 对字符串对象提供类文件接口 tarfilea 读写 TAR 归档文件, 支持压缩文件 tempfile 创建一个临时文件(名) uu 格式的编码和解码 zipfilec 用于读取 ZIP 归档文件的工具



更多内容参考官方文档:2.7.13 Doc