seek和tell是按字节处理,read是按字符
练习题:
写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作
1 f_name = open(file="test.txt", mode="w", encoding="gbk") 2 f_name.write("红红火火,恍恍惚惚 哈哈哈哈") 3 import os 4 f_name = "test.txt" 5 f_new_name = "new_test.txt" 6 old_str = "哈哈哈哈" 7 new_str = "成龙大哥" 8 f = open(f_name, mode="r", encoding="gbk") #打开旧文件 9 f_new = open(f_new_name, mode="w", encoding="gbk") #打开新文件 10 11 for line in f: 12 if old_str in line: #如果找到了旧字符串,就将其替换成新的 13 new_line = line.replace(old_str, new_str) 14 else: 15 new_line = line #其他字符串不变 16 f_new.write(new_line) #将修改的内容加入新文件 17 18 f.close() 19 f_new.close() 20 os.replace(f_new_name, f_name) #替换名字
写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
1 dic = {"k1": "v1v1", "k2": [11, 22, 33, 44]} 2 def check_func(a): # 定义形参 3 li = [] #创建空列表 4 for v in a.values(): # 把v代入到字典值里循环 5 if len(v) > 2: #判断,把符合要求的值加入到li 6 li.append(v[0:2]) 7 else: 8 continue #跳出这次循环 9 return li 10 a = check_func(dic) #调用函数 11 print(a)