f1 = open(r'd:王凯.txt', encoding='utf-8', mode='r') content = f1.read() print(content, type(content)) f1.close()
操作过程:
open()内置函数,操作文件
f1 文件句柄 f1,fh,file_handle,f....
f1.close()
打开文件产生文件句柄。
对文件句柄进行相应的操作(读,写,追加,读写....)。
关闭文件句柄。
1.1读:
r
# 第一种 read() 全部读取 f1 = open('alex与sb', encoding='utf-8') content = f1.read() print(content, type(content)) f1.close()
# 第二种 read(n) r:模式 按照 字符去读取 f1 = open('alex与sb', encoding='utf-8') content = f1.read(3) print(content) f1.close()
# 第三种 readline() 按行读取 f1 = open('alex与sb', encoding='utf-8') print(f1.readline().strip()) print(f1.readline().strip()) print(f1.readline().strip()) print(f1.readline().strip()) f1.close() print(666)
# 第四种 readlines() 返回一个列表,列表中的每个元素是原文件的一行 f1 = open('alex与sb', encoding='utf-8') content = f1.readlines() print(content, type(content)) f1.close()
# 第五种 for循环 *** 推荐使用 f1 = open('alex与sb', encoding='utf-8') for line in f1: print(line.strip()) f1.close()
rb #专门用来读图片或者视频
先来一个图片比如起名:有点大.jpg
f1 = open('有点大.jpg', mode='rb') content = f1.read() print(content)
f2 = open('不大呀.jpg',mode='wb') f2.write(content) f1.close() f2.close()
执行完之后:出来了
r+ 先读后写(后追加)
log3内容为
f1 = open('log3', encoding='utf-8', mode='r+') content = f1.read() print(content) f1.write('666') f1.write('来了') print(f1.read()) f1.close()
执行完查看
1.2 写
w
# 1,没有文件创建文件写入内容。
# 2,有文件先清空后写入。
f1 = open('log1', encoding='utf-8',mode='w') f1.write('又好了....') f1.close()
查看log1
# wb 上面有代码
1.3 a 追加
# 1,没有文件创建文件写入内容。
# 2,有文件直接在后面追加。
f1 = open('log3', encoding='utf-8',mode='a') f1.write(' 喇叭坏了 fuck') f1.close()
二、文件操作的常用方法
# readable() 是否可读
# writable() 是否可写
f1 = open('log1', encoding='utf-8',mode='w') f1.write('又好了....') if f1.readable(): print(f1.read()) # print(f1.readable()) f1.close()
# tell() 告诉你光标的位置(按照字节)
# seek() 调整光标的位置(按照字节)
f1 = open('alex与sb', encoding='utf-8') content = f1.read(3) #3是指读了3个字符 如果是()是指的读的全部字符 print(f1.tell()) #读了3个字符,也就是 太白金 三个字,那就是9个字节,所以结果是9 f1.close() f1 = open('alex与sb', encoding='utf-8') f1.seek(12) #12是指按照12个字节计算的话,是4个文字,所以 太白金星 4个字就没有了 content = f1.read() print(content) f1.close()
修改一个文件的过程:
1,以读的模式打开原文件
2,以写的模式打开一个新文件
3,对原文件的内容进行修改,形成新内容写入新文件
4,删除原文件
5,将新文件重命名为原文件。
练习题:
2,有如下文件:
-------
alex是老男孩python发起人,创建人。
alex其实是人妖。
谁说alex是sb?
你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。
----------
将文件中所有的alex都替换成大写的SB。
# read() 占用内存
import os #调用系统模块 with open('alex美文', encoding='utf-8') as f1, open('alex美文.bak',encoding='utf-8',mode='w') as f2: #1,以读的模式打开原文件alex美文 2,以写的模式打开一个新文件alex美文.bak old_content = f1.read() new_contenet = old_content.replace('SB', 'alex') #3,对原文件的内容进行修改,形成新内容写入新文件 f2.write(new_contenet) os.remove('alex美文') #4,删除原文件 os.rename('alex美文.bak','alex美文') # 5,将新文件重命名为原文件。 #但是上面的这个是把文件全读下面,不太好,我们推荐使用下面的for循环方式。 import os #调用系统模块 with open('alex美文', encoding='utf-8') as f1, open('alex美文.bak',encoding='utf-8',mode='w') as f2: #1,以读的模式打开原文件alex美文 2,以写的模式打开一个新文件alex美文.bak for line in f1: #for循环 new_line = line.replace('alex','SB') #把alex替换成SB #3,对原文件的内容进行修改,形成新内容写入新文件 f2.write(new_line) os.remove('alex美文') #4,删除原文件 os.rename('alex美文.bak','alex美文') # 5,将新文件重命名为原文件。