一、open() 方法 和 with open()方式
Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。
- 语法
- 简单:open(file, mode=‘r’)
- 完整:open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。
完整格式中参数说明:
- file: 必需,文件路径(相对或者绝对路径)。file变量是一个包含了你要访问的文件名称的字符串值
- mode: 可选,文件打开模式 。mode即为access_mode,决定了打开文件的模式:只读r,写入w,追加a等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读“r”。
- buffering: 设置缓冲
如果buffering的值被设为0,就不会有寄存。
如果buffering的值取1,访问文件时会寄存行。
如果buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。
如果取负值,寄存区的缓冲大小则为系统默认。- encoding: 一般使用utf8
- errors: 报错级别
- newline: 区分换行符
- closefd: 传入的file参数类型
- opener: mode
mode不同模式打开文件的完全列表
常用几种模式比较:
- 为了保证无论是否出错都能正确地关闭文件,我们可以使用 try … finally 来实现:
try:
f = open('/path/to/file', 'r')
print f.read()
finally:
if f:
f.close()
- 但是每次都这么写实在太繁琐,所以,Python 引入了 with 语句来自动帮我们调用 close() 方法:
#实际开发中较多情况使用:
# with open()方式打开文件,其可自动调用close()函数。
with open('/path/to/file', 'r') as f:
print f.read()
这和前面的 try … finally 是一样的,但是代码更佳简洁,并且不必调用 f.close() 方法。
二、close()方法
file 对象使用 open 函数来创建,close()方法关闭文件:
- File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。
- 当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。
语法:
fileObject.close()
参数
无
返回值
该方法没有返回值。
例子:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 打开一个文件
fo = open("foo.txt", "w")
print ("文件名: ", fo.name)
# 关闭打开的文件
fo.close()
以上实例输出结果:
文件名: foo.txt
三、File对象的属性
一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息。
以下是和file对象相关的所有属性的列表:
- file.closed 返回true如果文件已被关闭,否则返回false。
- file.mode 返回被打开文件的访问模式。
- file.name 返回文件的名称。
- file.softspace 如果用print输出后,必须跟一个空格符,则返回false。否则返回true。
如下实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 打开一个文件
fo = open("foo.txt", "w")
print ("文件名: ", fo.name)
print ("是否已关闭 : ", fo.closed)
print ("访问模式 : ", fo.mode)
print ("末尾是否强制加空格 : ", fo.softspace)
以上实例输出结果:
文件名: foo.txt
是否已关闭 : False
访问模式 : w
末尾是否强制加空格 : 0