[python] 文件处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[python] 文件处理相关的知识,希望对你有一定的参考价值。

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 模块的相关属性.

以上是关于[python] 文件处理的主要内容,如果未能解决你的问题,请参考以下文章

Python 编程核心知识体系-文件对象|错误处理

python 文件处理

Python 处理包含对象列表的大型 JSON 文件

python基础之文件处理

python:PIL图像处理

Python文件处理之文件写入方式与写缓存