打开文件时模式字符的含义:

字符

含义

"r"

以只读方式打开(默认)

"w"

以只写方式打开,若要打开的文件存在,则删除原文件内容。如果不存在,则创建该文件并以只写方式打开

"x"

创建一个新文件,并以写模式打开这个文件,如果文件存在,则会产生“FileExistsError”错误

"a"

以只写模式打开一个文件,如果要打开的文件存在,则要写入的内容追加到文件末尾

"b"

用二进制模式打开文件

"t"

文本模式打开文件(默认)

"+"

打开一个磁盘文件(可读可写),不能单独使用,要和其它模式字符结合使用

  • 缺省模式是“rt”
  • "w+b" ,可以实现二进制的随机读写,当打开文件时,文件内容会被清空
  • “r+b”  ,以二进制读和更新模式打开文件,打开文件时不会清空文件内容
  • "r+"  ,以文本模式读和更新模式打开文件,打开文件时不会清空文件内容

相关方法:

1、打开文件

    open(filename,mode)

    参数:filename,文件名,必选,字符串形式。mode,操作模式,可选,默认为  rt

    作用:打开文件

    返回值:返回一个文件流对象,文件流对象可以迭代。

        文件流对象是可迭代对象,迭代过程中将以换行符'\n'作为分隔符

      eg:f = open("123.txt")

      注意:open方法打开文件,结束时一定要关闭  f.close()

      f = open('phonenumber.txt')

      for line in f:

        print(line) # 打印每一行的数据

 1.1 读取文件

      s = f.read()  #一次性全部读取,对文本文件返回的为字符串。二进制文件返回的是字节串。

      s = f.readline()   #读取一行,遇到  \n  就返回

      s = f.readlines()  # 返回每行字符串的列表,

              返回的是一个列表,列表的每个元素是一行数据

      for  s  in f:

        print(s)

1.2写文件

      f = open("123.txt","w")  #  w  ,只写模式,只能写入文件,不能读取文件。

                 若文件不存在,则创建新的文件。

                 若文件存在,则写入的时候会覆盖原来文件里面的内容  

      f.write(str)   参数:要写入的内容,必选,且参数类型必须为字符串

           作用:在文件写入内容

           返回值:往文件里面写东西的时候,不需要返回值

                返回的是写入的字符串长度,即写入的字符长度

          注:对二进制文件需要用字节串操作

      f.writelines(str)  参数:必选,参数的内容必需为字符串,比如 参数为列表、元组、集合、字典时,其元素的类型必需为字符串

                为字典时,写入的是键

             作用:将str写入文件

1.3关闭文件

      f.close()

  1.4 判断文件是否可读写

      判断是否可读:d = f.readable()    返回True,可读。False,不可读

      判断是否可写:w = f.writeable()   返回True,可写。返回False,不可写

1.5 f.tell()

      作用:返回文件当前的读写位置,以字节计算

      返回值:数字,代表当前的读写位置

1.6设置读写位置

      f.seek(偏移量,whence=相对位置)   

      偏移量

        大于0的数代表向文件末尾方向移动的字节数

        小于0的数代表向文件头方向中移动的字节数

      相对位置

        0 代表从文件头开始偏移

        1 代表从文件当前读写位置开始偏移

        2 代表从文件尾开始偏移

2、标准输入输出 

  sys.stdin    标准输入文件
         ctrl+d 输入文件结束符
  sys.stdout 标准输出文件
  sys.stderr 标准错误输出文件
  模块名:sys
  注:
    标准文件不需要打开和关闭就可以使用

 

  2.1 python中使用标准输出定向到具体文件

 

      ① 先open 目标文件

 

        ff = open("/xx/xx/465.txt","a")

 

      ② 标准输出绑定目标文件流对象

 

        sys.stdout = ff

如果不先把标准输出绑定目标文件流对象,直接使用sys.stdout.write("") = ff 的话,内容会直接在终端上显示,而不会定向输出到目标文件中。

 

      ③ 内容写入目标文件

 

        【1】调用文件流对象的 write 方法 :

 

            ff.write("要写入到465.txt的内容")

 

        【2】直接使用print函数

 

            print("要写入到465.txt的内容",file=ff)

 

      ④ 关闭文件

 

        ff.close()