文件和流open()

流:

打开文件:

open(filemode='r'buffering=-1encoding=Noneerrors=Nonenewline=Noneclosefd=Trueopener=None),打开一个文件并返回相应的对象;

file:文件名;

mode:打开模式,默认只读;

buffering:设置缓冲;

encoding:设置编码;

errors:报错级别;

newline:区分换行符;

closefd:传入的file参数类型;

opener:

mode参数:

  r:读取模式(默认);

  w:写入模式;文件存在从头开始写入,不存在则创建后写入;

  x:新建一个文件写入,存在则异常

  a:附加写入,不存在则创建后写入;

  b:二进制模式;

  t:文本模式;

  +:打开一个文件进行更新(与其他模式结合使用);

  r+:打开文件进行读写,读数据时从头开始读,写入时从最后开始写;

  w+:打开文件进行读写,光标在开头,文件有内容则删除;

  a+:打开文件进行读写,光标在结尾,从最后继续追加;

常用方法:fo=open('filename')

fo.close():关闭文件,对文件操作完必须要关闭打开的文件;
fo.flush():刷新文件内部缓冲,将内部缓冲区数据立刻写入文件;
fo.fileno():返回一个非0整型的文件描述符;
next(fo):返回文件下一行;
fo.read([size]):读取指定的字节数,英文与中文都是一个字节,不指定或为负则返回全部,游标跟随移动;
fo.readline([size]):读取整行包括\n,如果指定则返回字节数,游标跟随移动;
fo.readlines():读取所有行包括\n,返回一个以每行为元素组成的列表,此时数据会全部加载入内存;
fo.seek(offset[,whence]):方法用于移动文件读取指针到指定位置,offset偏移量,whence偏移的起始位置,0开头、1当前、2末尾;
fo.tell():返回当前的位置数;英文占一个字节,utf-8中文占三个字节;
fo.wirte(str):将字符串写入文件,文件关闭刷新之后,字符串才真正被写入;
fo.wirtelines([str]):向文件中写入一序列的字符串,换行需要制定换行符,["hello\n","world"];
fo.truncate([size]):从文件首字符开始截取指定的字符数,后面的字符会被删除,无参数则从当前位置开始;
fo.isatty():检测文件是否连接到一个终端设备,是返回True;

如果对一个文件进行操作,首先要打开文件,然后操作文件,最后关闭文件。

# 打开文件,拿到文件句柄数
f = open('testfile','r+',encoding="utf8")

# 对文件进行操作
for line in f:
    pass

# 关闭文件
f.close()

  可以使用with语句操作文件,with语句结束时默认关闭文件

with open('file1') as f1, open('file2') as f2:
    for line in f1:
        f2.write(line)
posted @ 2019-09-11 14:00  houyongchong  阅读(163)  评论(0编辑  收藏  举报