day2-5文件操作
文件操作:
打开文件的模式有:
- r,只读模式(默认)。
- w,只写模式。【不可读;不存在则创建;存在则删除内容;】
- a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+,可读写文件。【可读;可写;可追加】
- w+,写读
- a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
- rU
- r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
- rb
- wb
- ab
with语句
为了避免打开文件后忘记关闭,可以通过管理上下文,即:
with open('log','r') as f: ...
如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:
with open('log1') as obj1, open('log2') as obj2: pass
f = open(r"G:\Python\1.txt","r+",encoding="gbk") data = f.read() print(data) f.write("\n我爱北京天安门!\n") f.write("天安门上太阳伞") data = f.read() print(data) f = open(r"G:\Python\1.txt","a+",encoding="gbk") #print(f.readline()) #打印前5行内容: for i in range(5): print(f.readline()) print(f.readlines()) #不打印第十行内容 for index,line in enumerate(f.readlines()): if index == 9: print("") continue print(index,line.strip()) #strip将首尾的空格符去掉。index:显示下标 #高效率读数据 叠代: for line in f: print(line) #使用高效率方法不打印第十行 count = 0 for line in f: if count == 9: print("----我是第十行----") count +=1 print(line.strip()) count +=1 #f.encoding---显示当前使用的编码格式。 print(f.encoding) #f.flush的作用。内容一个个输出 #实际案例:显示进度条。 import sys,time for i in range (30): sys.stdout.write("#") time.sleep(0.1) sys.stdout.flush() #f.truncate()----截断,这里只能将文件读写模式改为a才行,w:会清空文件,r:会显示没有写的权限。 #只能从头开始截断。 print(f.truncate(30)) #清空文件,文件只能是r+或a+,W也可以,w本身就是新建会清空内容的。 f.truncate() #打印光标的位置 print(f.tell()) # f.seek() #------定位指针位置: nun_2 = f.tell() print(nun_2) print(f.readline()) print(f.readline()) print(f.tell()) f.seek(nun_2) print(f.readline()) #f.closed判断文件是否关闭 f.close() #关闭文件 print(f.closed) #判断文件是否关闭
例:将文件中肆意的快乐等我享受,更换为 肆意的快乐等Alex去享受
注意:文件中的内容必须为字符串
文件中修改内容默认只能在文件最后添加,如果修改中间的内容,必须逐行读出来(转为字符串),然后将需要替换的内容更换(更换字符串),
然后将内容写入到新文件中。
f = open(r"g:\python\3.txt","r",encoding="gbk") f_new = open(r"g:\python\4.txt","w",encoding="gbk") for line in f: if "肆意的快乐等我享受" in line: line = line.replace("肆意的快乐等我享受","肆意的快乐等Alex去享受") f_new.write(line) f_new.write(["zs","pass"]) f.close() f_new.close()
posted on 2017-06-29 22:30 aptech2017 阅读(58) 评论(0) 收藏 举报
浙公网安备 33010602011771号