python-文件操作

发布时间:2019-05-24 22:00:01编辑:auto阅读(2186)

    文件操作

    1.  读 / 写 操作

    1. 读取: r (read):只能读不能写,文件不存在就报错


      #打开文件:
         object = open('某txt文件',mode = 'r',encoding = '编码')

      #读取文件所有内容到内存:
         content = object.read()
         print(content)
         
      #读取文件的所有内容到内存,并按照每一行进行分割到列表中。
      content = object.readlines()
         print(content)
         
      #如果以后读取一个特别大的文件
      for line in object:  #一行一行进行读取
             line = object.strip()  #去除换行
      print(line)

      #关闭内容:
         object.close()
      • read(): 全部读到内存

      • read(1)

        • 1表示一个字符

          obj = open('某个txt文件',mode='r',encoding='utf-8')
          data = obj.read(1) # 1个字符
          obj.close()
          print(data)
        • 1表示一个字节(二进制中)

          obj = open('某个txt文件',mode='rb')    # b:二进制的意思
          data = obj.read(3) # 1个字节
          obj.close()
    2. 写入:w (write): 只能写不能读(先清空文件),文件不存在就新建

      #打开文件:
         object = open('某个txt文件或要新建的文件',mode = 'w',encoding = '编码')

      #写内容:
         object.write('xxx')

      #关闭文件:
         object.close()
      • write(字符串)

        obj = open('某个txt文件或要新建的文件',mode='w',encoding='utf-8')
        obj.write('你好')
        obj.close()
      • write(二进制)

        obj = open('某个txt文件或要新建的文件',mode='wb')

        # obj.write('你好'.encode('utf-8'))
        v = '你好'.encode('utf-8')
        obj.write(v)

        obj.close()
    3. 追加; a (append): 只能追加不能读,不存在则新建

      #打开文件:
         object = open ('某个txt文件或要新建的文件',mode = 'a',encoding = '编码')

      #写内容:
         object.append()

      #关闭文件
         object.close()

    2. 其他操作:seek / tell / flush

    1. seek(光标字节位置),无论模式是否带b,都是按照字节进行处理。

      obj = open('某个txt文件',mode='r',encoding='utf-8')
      obj.seek(3) # 跳转到指定字节位置,读取后面内容
      data = obj.read()
      obj.close()
      print(data)

      obj = open('a.txt',mode='rb')
      obj.seek(3) # 跳转到指定字节位置
      data = obj.read()
      obj.close()
      print(data)
    2. tell(), 获取光标当前所在的字节位置

      obj = open('a.txt',mode='rb')
      obj.read()
      data = obj.tell()
      print(data)
      obj.close()
    3. flush,强制将内存中的数据写入到硬盘

      v = open('a.txt',mode='a',encoding='utf-8')
      while True:
         val = input('请输入:')
         v.write(val)
         v.flush()
      v.close()

    3 . 关闭文件

    1.  

      v = open('a.txt',mode='a',encoding='utf-8')

      v.close()
    2.  

      with open('a.txt',mode='a',encoding='utf-8') as v:
         data = v.read()
      # 缩进中的代码执行完毕后,自动关闭文件

    4 .文件内容的修改

    1.  

      with open('a.txt',mode='r',encoding='utf-8') as f1:
         data = f1.read()
      new_data = data.replace('飞洒','666')

      with open('a.txt',mode='w',encoding='utf-8') as f1:
         data = f1.write(new_data)
    2. 大文件修改

      f1 = open('a.txt',mode='r',encoding='utf-8')
      f2 = open('b.txt',mode='w',encoding='utf-8')  #先打开两个文件,再进行操作
      for line in f1:      # 一行一行进行修改
         new_line = line.replace('要被修改的内容','被修改后的内容')
         f2.write(new_line)
      f1.close()
      f2.close()

      #另一种写法:
      with open('a.txt',mode='r',encoding='utf-8') as f1, open('c.txt',mode='w',encoding='utf-8') as f2:
         for line in f1:
             new_line = line.replace('要被修改的内容','被修改后的内容')
             f2.write(new_line)
       

    三.练习:

      1.请将user中的元素根据 _ 链接,并写入 'a1.txt' 的文件

        user = ['alex','eric']
        data = '_'.join(user)
        object = open('a1.txt',mode = 'w',encoding = 'utf-8')
        object.write(data)
        object.close()

      2.请将user中的元素根据 | 链接,并写入 'a2.txt' 的文件

        user = [
        {'name':'alex','pwd':'123'},   
        {'name':'eric','pwd':'olbody'},]
        object = open('a2.txt',mode = 'w',encoding = 'utf-8')
        for item in user:
            line = '%s|%s\n' %(item['name'],item['pwd'])
            object.write(line)
         object.close()

     

      3.请将a2.(根据2)txt中的文件读取出来并添加到一个列表中 ['alex|123','eric|olbody']

    方法一:
        list = []
        objecct = open('a2.txt',mode = 'r',encoding = 'utf-8')
        for line in object:
           line = line.strip()
           list.append(line)
         print(list)
        
     方法二:
          file_obj = open('a2.txt',mode='r',encoding='utf-8')
        content = file_obj.read()
        file_obj.close()
        content = content.strip() #去除最后一个换行
        data_list = content.split('\n') #根据中间的换行进行切割
        print(data_list)

     

关键字