一、open() 方法 和 with open()方式
Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

  • 语法
  1. 简单:open(file, mode=‘r’)
  2. 完整:open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。
完整格式中参数说明:

  1. file: 必需,文件路径(相对或者绝对路径)。file变量是一个包含了你要访问的文件名称的字符串值
  2. mode: 可选,文件打开模式 。mode即为access_mode,决定了打开文件的模式:只读r,写入w,追加a等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读“r”。
  3. buffering: 设置缓冲
    如果buffering的值被设为0,就不会有寄存。
    如果buffering的值取1,访问文件时会寄存行。
    如果buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。
    如果取负值,寄存区的缓冲大小则为系统默认。
  4. encoding: 一般使用utf8
  5. errors: 报错级别
  6. newline: 区分换行符
  7. closefd: 传入的file参数类型
  8. opener: mode

mode不同模式打开文件的完全列表

python出来后关闭文件 python中关闭文件的方法_python出来后关闭文件


常用几种模式比较:

python出来后关闭文件 python中关闭文件的方法_python出来后关闭文件_02

  • 为了保证无论是否出错都能正确地关闭文件,我们可以使用 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对象相关的所有属性的列表:

  1. file.closed 返回true如果文件已被关闭,否则返回false。
  2. file.mode 返回被打开文件的访问模式。
  3. file.name 返回文件的名称。
  4. 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