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)

浙公网安备 33010602011771号