文件操作

一、文件操作

    1.打开方式分为两种:绝对路径打开,相对路径打开

        d:\asd.txt    asd.txt

    2.编码方式:utf-8、gbk。。。

    3.操作方式:只读、只写、追加、读写、写读。。。

  读:r、rb、r+

    打开一个文件:

      f = open('file',mode='r')
      print(f.read())
      f.close()

    在文件里追加内容:

      f = open('file',mode='r+',encoding='utf-8')
      print(f.read())
      f.write('123')
      f.close()

       ##这里会遇到个问题:先读再写写的内容读不出来,要是先写再读就会输出空。为什么会出现这个问题,原因是指针没有从头开始。

       解决办法:加一行:f.seek(0)  就可以让指针到头

      f = open('file',mode='a+',encoding='utf-8')
      f.write('123')
      f.seek(0)
      print(f.read())
      f.close()

    修改文件内容:

      f = open('file',mode='ab')
      f.write('123'.encode('utf-8'))
      f.close()

 

  写:w、w+、wb

    w只写,把文件内容都清空,然后再写入,如果没有这个文件则自动创建文件。

    其他跟r+、rb用法一样。

      f = open('file',mode='w',encoding='utf-8')
      f.write('123')
      f.close()

  追加:a、a+、ab

    a在文件内容后追加内容。其他跟r一样。

      f = open('file',mode='a',encoding='utf-8')
      f.write('123')
      f.close()

  其他功能:  

   f.tell() 输出光标位置

   f.seek()移动光标到第几个字节(中文3个字节,如果移动2个则报错)。f.seek(0,2) 移动到结尾。

    f = open('file',mode='r+',encoding='utf-8')
    print(f.tell())
    f.seek(4)
    print(f.tell())
    f.close()

   f.readline()一行一行的读文件内容(只读第一行)

   f.readlines()每一行当成列表中的一个元素,添加到list中,可以for循环读,会有换行用strip去掉。

    f = open('file',mode='r+',encoding='utf-8')
    line = f.readlines()
    for i in line:
    print(i.strip())
    f.close()

  f.truncate(3)  #保留前3个字节(一个中文汉字)

  另一种读取方法:with

    with open('file',mode='a+',encoding='utf-8') as f:
    f.write('asd')

  

 

      

posted @ 2017-12-25 20:34  2009_boy  阅读(143)  评论(0)    收藏  举报