open()

open() 用于打开文件,可以对文件进行读写操作,语法如下:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True) -> file object

file:指定要打开的文件的文件名
mode:可选参数,指定打开文件的模式,如果不指定默认以只读模式打开文件
buffering:可选参数,设置缓冲区大小,设置缓冲区的作用是是为了减少系统的IO调用
encoding:可选参数,用于说明打开文件后,返回的数据采用的是何种编码,一般采用 utf8 或 gbk
errors:可选参数,指定 errors=strict 时,字符编码出现问题时会报错,指定 errors=ignore 时,字符编码出现问题时会忽略
newline:可选参数,用于指定换行符,如果是Linux文件我们可以指定 \n 是换行符,如果是Windows文件我们可以指定 \r\n 是换行符
closefd:可选参数,指定传入的 file 参数类型,指定 closefd=True 时,传入的 file 参数为文件名,指定 closefd=False 时,传入的 file 参数为文件描述符
file object:打开文件后会返回一个文件对象,Python通过文件对象的方法对文件进行读写等操作

缓冲区的几种设置方法:

  (1) 如果设置为0,关闭缓冲区,有输入就直接写入磁盘文件
  (2) 如果设置为1,碰到换行就会将缓冲区的数据写入磁盘文件
  (3) 如果设置为大于1,缓冲区满了 n 个字节才会写入磁盘文件

打开模式:

  r :以只读模式打开文件
  w :以写模式打开文件,打开前会先清空文件
  a :以追加模式打开文件
 b :以二进制模式打开文件,适用于非文本文件,如图片、视频文件等
 rb :以二进制读模式打开文件
 wb :以二进制写模式打开文件
 ab :以二进制追加模式打开文件
 r+ :以读写模式打开文件,详解
 w+ :以读写模式打开文件,详解
 a+ :以读写模式打开文件,详解
 rb+ :以二进制读写模式打开 (参考 r+ )
 wb+ :以二进制读写模式打开 (参考 w+ )
 ab+ :以二进制读写模式打开 (参考 a+ )

文件对象的方法:

 read():一次性读取所有文件内容,返回一个字符串;也可以指定 read(5) 读取几个字符,通常用在大文件的循环中
 readline():一次只读取一行文件内容,返回一个字符串
 readlines():一次性读取所有文件内容,返回一个列表,每一行是列表的一个元素
 next():返回文件的下一行,如果指针在文件末尾,再执行就会报错
 flush():刷新缓冲区,直接把缓冲区的数据立刻写入文件
 write():用于写入指定的内容,需要以可写模式打开
 seek():用于移动文件指针,通常使用 seek(0) 移动到文件起始位置
 tell():返回移动指针的位置
 close():用于关闭文件,只有关闭了文件,写操作才会被保存

简单示例:

In [1]: fd = open('1.txt', 'r')    # 打开文件

In [2]: fd.read()                  # 读取文件内容
Out[2]: 'aaa\nbbb\nccc\n'

In [3]: fd.close()                 # 关闭文件

通常我们用 with open() 来取代 open() ,用 with 语句的好处,就是到达语句末尾时,会自动关闭文件,不需要我们手动 close() :

In [10]: with open('1.txt', 'r') as fd:
   ....:     data = fd.read()
   ....:     print(data)
   ....:     
aaa
bbb
ccc


使用for循环遍历文件:

#!/usr/bin/env python

fd = open('1.txt', 'r')

for line in fd:
    print(line),

fd.close()
#!/usr/bin/env python

with open('1.txt', 'r') as fd:
    for line in fd:
        print(line),


使用while循环遍历文件:

#!/usr/bin/env python

fd = open('1.txt', 'r')

while True:
    line = fd.readline()
    if not line:
        break
    print(line),

fd.close()
#!/usr/bin/env python

with open('1.txt', 'r') as fd:
    while True:
        line = fd.readline()
        if not line:
            break
        print(line),

 

 

 

 

 

     

posted @ 2019-01-10 21:02  孔雀东南飞  阅读(826)  评论(0编辑  收藏  举报