python成长之路五-文件操作
1,文件操作
f = open("D:\种子.txt",encoding="utf-8",mode="r") # 打开一个种子.txt文件,权限按操作为只读模式 f = open("D:\种子.txt","r",encoding="utf-8") # 简写,"r"也可以不写,默认为只读
读方法:
1,read # r模式 ,按照字符读取。
f =open("文件操作1",encoding="utf-8",mode="r") content = f.read(5) # 读取文件里的5个字符 print(content) f.close()
2,readline # 按行读取
f = open("文件操作1",encoding="utf-8",mode="r") print(f.readline()) # 打印第一行字符串 f.close()
3,readlines #按行读取,返回一个列表
f = open("文件操作1",encoding="utf-8",mode="r") content = f.readlines() for i in range(len(content)): # 循环列表 content[i] = content[i].strip() # 通过索引去掉每个元素的空格跟换行符 print(content) f.close()
4,文件较大,通过for循环遍历每行字符串
f = open("文件操作1",encoding="utf-8") for i in f: print(i.strip()) f.close()
5,rb 文件凡是操作带b字母,都是与非文字类文件相关的。
f = open(r"D:\Qishijihua\视频\day08\day08\美女1.jpg",mode="rb") # r 为转义字符 content = f.read() print(content) f.close()
6,r+ 读写:先读后写
f = open("文件操作1",encoding="utf-8",mode="r+") content = f.read() # 先读 print(content) f.write("666") # 再写 f.close()
# 如果不读直接写会覆盖
写模式
1,w 没有文件,创建文件再写入。有文件清空,后写入。
f = open("种子.txt",encoding="utf-8",mode="w") f.write("www.hao123.com") f.close()
2,wb 非文字类写入
f = open(r"D:\Qishijihua\视频\day08\day08\美女1.jpg",mode="rb") content = f.read() print(content) f1 = open("美女2.jpg",mode="wb") f1.write(content) f.close() f1.close()
3,w+ 写读
f = open("文件操作2",encoding="utf8",mode="w+") f.write("我爱python") content = f.read() print(content) f.close()
追加
1,a 没有文件创建文件也要写。有文件直接在文件后面追加
f = open("文件操作2",encoding="utf-8",mode="a") f.write("\n我爱北京天安门") f.close()
2,a+ 写读
f = open("文件操作1",encoding="utf-8",mode="a+") content = f.write("\n天安门上太阳升") print(content) f.close()
其他方法:
1,seek 调整光标,seek(0)调整到开始,seek(0,2)调整到结尾。
2,readale 是否可读
3,writable 是否可写
4,with 主动关闭文件句柄
5,os.remove 删除文件名
6,os.rename 修改文件名
# 其他方法:readale ,writable,seek # f = open('文件操作1',encoding='utf-8') # if f.writable(): # content = f.read() # print(content) # f.close() # seek 调整光标到开始,seek(0) 调整光标到结尾seek(0,2) ***** # f = open('文件操作1',encoding='utf-8') # f.seek(6) # 按照字节去移动光标 # content = f.read() # print(content) # f.close() # f = open('文件操作1',mode='rb') # print(f.read()) # f.seek(6) # 按照字节去移动光标 # content = f.read() # print(content) # f.close() # tell 告知光标的位置 ***** # f = open('文件操作1',encoding='utf-8') # f.seek(0,2) # 按照字节去移动光标 # print(f.tell()) # f.close() # truncate 要在writable模式下进行截取。 # r+ a+ ..不能在w模式下使用,对原文件进行截取 # f = open('文件操作1',encoding='utf-8',mode='r+') # print(f.truncate(6)) # f.close() # 1,主动关闭文件句柄 # with open('文件操作2',encoding='utf-8') as f1: # print(f1.read()) # 2,开启多个文件句柄。 # with open('文件操作2',encoding='utf-8') as f1,\ # open('文件操作3',encoding='utf-8',mode='w') as f2: # print(f1.read()) # f2.write('666666')
# 文件的改的操作 # 1,以读的模式打开原文件,产生一个文件句柄f1. # 2,以写的模式创建一个新文件,产生一个文件句柄f2. # 3,读取原文件内容,进行修改,并将修改后的写入新文件。 # 4,将原文件删除。 # 5,将新文件重命名成原文件。 # low版 import os with open('alex的深度剖析', encoding='utf-8') as f1,\ open('alex的深度解析.bak',encoding='utf-8',mode='w') as f2: old_content = f1.read() new_content = old_content.replace('alex','SB') f2.write(new_content) os.remove('alex的深度剖析') os.rename('alex的深度解析.bak', 'alex的深度剖析') # import os with open('alex的深度剖析', encoding='utf-8') as f1,\ open('alex的深度解析.bak',encoding='utf-8',mode='w') as f2: for line in f1: new_line = line.replace('SB','alex') f2.write(new_line) os.remove('alex的深度剖析') os.rename('alex的深度解析.bak', 'alex的深度剖析')