Python-文件操作

循环删list

  l = [1,1,2,3,4,5,6,7,8]
  l2 = [1,1,2,3,4,5,6,7,8]    不可以直接写成 l2 = l(浅拷贝,同一块内存)
    0 1 2 3 4 5 6 7 8


  for i in l2:
    if i %2 != 0:
    l.remove(i)
  
  正在循环的list,删里面的元素会导致下标错乱,取值有误

  l = [1,1,2,3,4,5,6,7,8,[1,2,3]]
  浅拷贝和深拷贝
    l2 = l     浅拷贝,内存地址不变,内存地址变了的也不一定就是深拷贝
    l2 = l.copy()    浅拷贝
    l2 = copy.copy(l)    浅拷贝
    l2 = l[:]     浅拷贝

    l2 = copy.deepcopy(l) #深拷贝



文件操作

  文件打开模式:9种   读(r) 写(w) 追加(a)

    r: 只能读不能写,文件不存在会报错

    w: 只能写不能读,文件不存在会创建,文件已存在会清空文件里的内容

    a: 只能写不能读,文件不存在会创建,文件已存在不会清空文件内容,会在末尾追加

 

  nums = [1,2,3,4,5]
  f = open("a.txt",'w',encoding='utf-8')     打开文件不存在的话,会创建

  f.write(“你好呀”)    只能写字符串


  for i in nums:
    i = str(i)+'\n'
    f.write(i)    只能写字符串

 

  f.writelines()   

  result = f.read()

  f.close()

 

 

  f = open("a.txt",'r',encoding='utf-8')    打开文件不存在的话,会报错

  result = f.read()   读取所有内容,返回字符串

  result = f.readlines()   读取所有内容,返回list,把每一行内容放到一个list中

  result = f.readline()   读取一行

  f.close()

  

  f.seek(0)    文件指针

 

  f = open("a.txt",'a',encoding='utf-8')   

  result = f.read()

  f.close()


  for i in nums:
    i = str(i)+'\n'
    f.write(i)    只能写字符串

  nums2 = [str(i)+'\n' for i in nums]
  f.writelines(nums2)
  result = f.read()
  f.close()

 

  r+    读写模式,文件指针在最前面

  w+    写读模式

  a+    追加读模式

  r相关,文件不存在都会报错,他的文件指针是在最前面的

  w相关,都会创建文件,都会清空文件内容

  a相关,如果要读,那么就需要移动文件指针,不管怎么移动文件指针,写的时候都是追加在最后面

 

  f.fush()    刷新
  f.tell()    查询指针位置

  f = open('e:\\niuhy\\xxxx\\xx')   
  f = open(r'e:\niuhy\xxxx\xx')     r表示原字符

 

修改文件

  f = open("user.txt",'a+',encoding="utf-8")
  f.seek(0)
  result = f.read()

  result_new = result.replace("hello","你好")

  f.seek(0)

  f.truncate()    清空文件

  f.write(result_new)
  f.close()

 

  import os
  f1 = open("user.txt",encoding='utf-8')
  f2 = open("user.txt.bak","w",encoding="utf-8")
  for line in f1:
      new_line = line.replace("周","周杰伦")
      f2.write(new_line)
  f1.close()
  f2.close()
  os.remove("user.txt")
  os.rename("user.txt.bak","user.txt")

 

自动关闭文件

  f = open("user.txt",'a+',encoding="utf-8")
  with open("user.txt",encoding="utf-8") as f, open("user.txt2","w",encoding='utf-8') as f2:
      for line in f:
          new_line = line.replace("周杰伦","周")
          f2.write(new_line)

posted @ 2021-04-29 08:43  我是我的女神  阅读(61)  评论(0)    收藏  举报