Python学习笔记之文件和流

打开文件:open(name[,mode[,buffering]]),返回一个文件对象,模式(mode)和缓冲(buffering)是两个可选参数。

假设有一个名为somefile.txt的文件,存储路径为c:\text,打开方式如下:f = open(r'C:\text\somefile.txt')

mode参数:如果open函数只带一个文件名参数,可以获得能读取文件内容的文件对象,如果要进行写操作,则必须要提供一个模式操作显式声明。

 

描述
'r' 读模式
'w' 写模式
'a' 追加模式
'b' 二进制模式(可添加到其他模式中使用)
'+' 读/写模式(可添加到其他模式中使用)

 

'r+'参数可以在一个文件读写时使用

'rb'参数可以读取一个二进制文件

buffering函数:控制文件的缓冲,如果是0或者False,则I/O操作是无缓冲的(直接对硬盘进行操作),是1或者True则I/O操作针对内存,在进行flush或者close时才更新硬盘上的数据,大于1的数字代表缓冲区大小(字节),为负数表示使用默认缓冲区大小。

 

基本文件方法:文件或流最重要的能力是提供或接收数据。

>>> f2 = open('F:\Python.txt')
>>> f2.read()
'hello worldhi'
>>> f3 = open('F:\Python.txt','a')
>>> f3.write('\nPython')
7
>>> f3.close()
>>> f2.read()
'\nPython'
>>> f2.close()

read方法可以指定读取个数。

使用writelines(list)对文件进行修改:

f = open('F:\Python.txt')
lines = f.readlines()
f.close()
lines[1] = 'bye bye'
f2 = open('F:\Python.txt','w')
f2.writelines(lines)

 

 关闭文件:

  • 使用try/finally语句,在finally语句中调用close方法;
  • with语句,打开文件并将其赋值到变量上,文件在语句结束时自动关闭,即使是由于异常引起的结束也是如此。

  with open('file.txt') as file1:

    do_something(somefile)

上下文管理器:是一种支持__exit__和__enter__两个方法的对象,__enter__方法不带参数,在进入with语句块的时候被调用;__exit__方法有三个参数:异常类型、异常对象和异常回溯,在离开方法(带有通过参数处理的、可引发的异常)时这个函数被调用,如果__exit__返回false,那么所有异常都不会被处理。

文件可以用作上下文处理器,__exit__关闭文件,__enter__返回文件对象本身。

文件对象是一个可迭代对象,对于大文件的读取,可以使用如下方法:

f = open('F:\Python.txt')
for x in f:
    print(x)
f.close()

或者直接对文件进行迭代,不使用变量存储文件对象:

for line in open('F:\Python.txt'):
    print(line)

line1,line2 = open('F:\Python.txt')
print(line1)
print(line2)

lines = list(open('F:\Python.txt'))
print(lines)

 

posted @ 2017-08-29 20:13  HHello_World  阅读(256)  评论(0编辑  收藏  举报