#1、通用文件copy工具实现
src_file=input('源文件路径>>: ').strip() dst_file=input('源文件路径>>: ').strip() with open(r'{}'.format(src_file),mode='rb') as f1, open(r'{}'.format(dst_file),mode='wb') as f2: for line in f1: f2.write(line)
#2、基于seek控制指针移动,测试r+、w+、a+模式下的读写内容
with open("a.txt","r+",encoding="utf-8") as f : print(f.read())#输出文件全部内容,此时光标到末尾 f.seek(3,0)#把光标移动到第3个字节处 print(f.tell()) f.write("sdg")#覆盖 print(f.read())#从第6个字节读取剩余文件内容 with open("b.txt","w+",encoding="utf-8") as f : print(f.read())#w模式先会将文件清空,此时读不到文件,光标在开头 f.seek(5,0)#把光标移动到第5个字节处 print(f.tell()) f.write("aga")#从第5个字节处写入bbb此时光标到第8个字节处 print(f.read())#从第8个字节读取剩余文件内容 with open("b.txt", "a+", encoding="utf-8") as f: print(f.read()) # a模式先会将光标移动到文件末尾,此时读不到文件内容 f.seek(3, 0) # 把光标移动到第3个字节处 print(f.tell()) f.write("tww") # a模式在写入文件内容时会默认把光标移动到文件末尾 print(f.read()) # 从文件末尾读取剩余文件内容
#3、tail -f access.log程序实现
with open("access.log","a")as f:#先执行 f.write("aaaa") import time with open("access.log","rb")as f: f.seek(0,2) while True: line = f.readline() if len(line) == 0: time.sleep(0.5) else: print(line.decode("utf-8"))