文件除r、w、a方式打开外,还可以有多种组合方式如r+ w+ a+等多种方式
1、r+ 读写模式介绍,开始读是从一行开始读,写永远从最后开始写(类似于追加)
# f = open("test.txt","r+",encoding ="utf-8") f.readline() f.readline() f.readline() # 不管如何读或者是seek。文件永远从尾部追加。写时候,不会影响读光标位置。 print("当前光标位置:",f.tell()) f.write("\n测试r+11") print("第一次插入当前光标位置:",f.tell()) print(f.readline()) print("当前光标位置:",f.tell()) f.write("\n测试r+22") print("第二次当前光标位置:",f.tell()) print(f.readline()) print(f.read()) E:\Users\xiajinqi\PycharmProjects\twoday\venv\Scripts\python.exe E:/Users/xiajinqi/PycharmProjects/twoday/file2.py 当前光标位置: 51 第一次插入当前光标位置: 423 追加2 当前光标位置: 423 第二次当前光标位置: 435 追加3 追加4 追加5 追加6 追加7 追加8 追加9 追加10测试r+ 测试r+ 测试r+ 测试r+ 测试r+ 测试r+ 测试r+ 测试r+ 测试r+ 测试r+11 测试r+22 测试r+11 测试r+22 测试r+11 测试r+22 测试r+11 测试r+22 测试r+11 测试r+22 测试r+11 测试r+22 测试r+11 测试r+22 测试r+11 测试r+22
2、w+ 写读(创建一个新的文件),读完以后,光标会在尾部,读时候需要从seek.并且读不影响写入到位置。在尾部写入。
# w+相对使用较少。创建一个新的文件读写 f = open("test2.txt","w+",encoding=‘utf-8‘) f.write("1----------\n") f.write("2----------\n") f.write("3----------\n") print(f.readline()) print(f.tell()) f.seek(0) print(f.readline()) f.write("test----------\n") f.seek(0) print(f.read()) E:\Users\xiajinqi\PycharmProjects\twoday\venv\Scripts\python.exe E:/Users/xiajinqi/PycharmProjects/twoday/file2.py 39 1---------- 1---------- 2---------- 3---------- test---------- Process finished with exit code 0
3 a + 追加读。不会创建新文件。在文件后面追加。
# w+相对使用较少。创建一个新的文件读写 f = open("test2.txt","a+",encoding=‘utf-8‘) f.write("1----------\n") f.write("2----------\n") f.write("3----------\n") print(f.readline()) print(f.tell()) f.seek(0) print(f.readline()) f.write("test----------\n") f.seek(0) print(f.read())
4、rb和wb 以二进制方式读写。
# w+相对使用较少。创建一个新的文件读写 f = open("test2.txt","rb") print(f.readline()) f.close() #.encode() 默认使用 f = open("test2.txt","wb") print(f.write("binnary".encode())) f.close() f = open("test2.txt","rb") print(f.readline()) f.close()
5、文件修改,将文件中的内容替换。
# 将流年未亡香樟依旧 中 将流年未亡 改为时光已逝 old_file = open("test.txt",‘r‘,encoding="utf-8") new_file = open("test.txt.bak","w",encoding="utf-8") for line in old_file : if "流年未亡香樟依旧" in line : line = line.replace("流年未亡香樟依旧","时光已逝香樟依旧") new_file.write(line) old_file.close() new_file.close() 歌词内容: 时光雨洒落在你我心里 消失了感情在脸上留守 时光已逝香樟依旧 夏天终于走到了最后 多少的执着输给了时间 多少的泪水流过了青春
5、python with open("test.txt","r",encoding:"utf-8") as f 的使用
with open("test.txt",‘r‘,encoding="utf-8") as f : print(f.read()) #打开多个文件 with open("test.txt",‘r‘,encoding="utf-8") as f1 , open("test.txt",‘r‘,encoding="utf-8") as f2 : print(f.read())
6、python实现shel的替换查找工作
# Author : xiajinqi import sys operotor_type = sys.arg[1] find_file = sys.argv[2] find_str = sys.argv[3] replace_str = sys.arg[4] if operotor_type == ‘f‘ : with open(find_file, ‘r+‘, encoding="utf-8") as f: for line in f: if find_str in line: print(line) else: print("查找的内容不存在") elif operotor_type == ‘r‘ : with open(find_file, ‘r+‘, encoding="utf-8") as f1, open("test.bak", ‘w+‘, encoding="utf-8") as f2: for line in f1: if find_str in line: line =line.replace(find_file,find_str,replace_str) f2.wirte(line) else : print("usage:python find.py f/r filename findstr replacestr")