day8 文件操作句柄 r+ w+ a+ 文件的更改过程

#c:\Users\johm\PycharmProjects\cplane s1
#-*-coding:utf-8-*-

"""
@author: ChenWen
@contact: [email protected]
@software: PyCharm
@file: 01-课堂笔记.py
@time: 2018/8/10 19:03
"""

#文件的操作

#什么是 文件句柄?
# f = open(r'C:\Users\johm\PycharmProjects\cplane s1\day8\私密联系方式',encoding='utf-8',mode='r')
# data = f.read()
# print(data)


#open() python 的内置函数,调用的是windows的系统命令
# f
# f_obj
# f_handler
# f_h fh 就是文件句柄

#文件操作的三部曲
#①打开文件 生成问价句柄
#②对文件进行操作
#③关闭文件句柄

#第一步 打开文件生成文件句柄中的参数
#第一个参数:文件的路径
#第二个:文件的编码方式
#第三个参数:文件的操作模式

#文件的路径
#相对路径:在当前目录下查找
#绝对路径:计算机中的存储路径
#文件路径报错的解决办法
#一:文件路径前面加一个r
# r'C:\Users\johm\PycharmProjects\cplane s1\day8\私密联系方式‘
#二:\变成\\
#'C:\\Users\\johm\\PycharmProjects\\cplane s1\\day8\\私密联系方式‘

#打开文件的编码方式 一定要与文件数据的编码方式一致


#rb模式
#文件操作模式中 凡是带b 处理的对象是 非文字类(图片 声音 视频)的文件

#读取一张图片的数据
'''f = open('Screenshot.jpeg',mode='rb')
data = f.read()
print(data)
f.close()'''

#文件的读取
# f = open('私密联系方式',encoding='utf-8',mode='r')
# data = f.read(n)#全部读取 如果加了参数n 读取n个字符
# data = f.readlines()#一次性全部读取 生成一个字典
# ['请查看链接。。。\n', '今天天气真不错!!\n', '我想出去旅游!!']
# data = f.readline(n)#读取一行 如果加了参数n 读取n个字符
# print(data)
# f.close()

#对于大型的文件不能采用上面的方法
#for循环对文件进行逐行的读取
'''f = open('私密联系方式',encoding='utf-8',mode='r')
for line in f :
print(line.strip())
f.close()'''

'''f = open ('私密联系方式',encoding='utf-8',mode= 'r')
data = f.read(5)
print(data)
f.close()'''

#文件的写入
#w模式
'''f = open ('文件操作',encoding='utf-8',mode='w')
f.write('我想去四川旅游!!')
f.close()'''

#没有文件 创建文件也要写入
#有文件,先清空 再写入#####千万要注意w这种模式###### 有文件的话会把源文件的数据清空
'''用模式rb读取一个图片文件 用wb模式生成另外一个图片文件'''
'''f = open ('Screenshot.jpeg',mode='rb')
data = f.read()
f.close()

f1 = open ('图片2.jpeg',mode='wb')
f1.write(data)
f1.close()'''

#a
#追加模式
#没有文件 创建文件也要写
#有文件直接在问价你的最后追加
'''f = open ('文件操作',encoding='utf-8',mode='a')
f.write('我想带你去旅行!!!')
f.close()'''

# r+模式 读写模式
#先 读取 后 追加
'''f = open('文件操作',encoding='utf-8',mode='r+')
content = f.read(3)
print(content)
f.write('带你去看风景!!!')
f.close()'''

#记住 读取文件之后 光标停留在文件的最末尾 然后直接再末尾添加

#如果不读取 直接就添加 会咋样???
f = open ('文件操作',encoding='utf-8',mode='r+')
f.write('我想陪你去看电影!!!')
f.close()
#结果是重文件的开头 用写减去的内容 覆盖 原来的内容


#w+ 写读模式
'''f= open('文件操作',encoding='utf-8',mode='w+')
f.write('今天下午我们去跑步好吗?')#直接对文件进行写入 #记住啊 写入之前会把原文件清空
content = f.read()#对文件读取 并把结果赋值给 content
print(content)'''

#f.seek(n) 调整指针的位置
'''f = open ('文件操作',encoding= 'utf-8',mode='r+')
f.seek(9)#把指着你调到 第六个字节 utf编码 的时候 代表了2个汉字 所以这个参数 是3的倍数
data = f.read()
print(data)
f.close()
'''

'''f = open ('文件操作',encoding='utf-8')#不写模式 默认是r模式
#f.seek(0)#把光标调整到最前面
f.seek(0,2)#把光标调整到最后 #什么内容也读不到
data = f.read()
print(data)
f.close()
'''

#f.tell 告知光标的位置
'''f = open ('文件操作',encoding='utf-8',mode='r')
f.seek(0,2)
print(f.tell())#我想陪你去看电影!!!\n 8*3+3*2
f.close()'''

#f.truncate r+ a+模式下对 原文件的长度 从头到尾 进行截取
#w模式会原文件清空 在街区就没有任何意义了
'''f = open ('文件操作',encoding='utf-8',mode='r+')
print(f.truncate(6))#返回值是6
f.close()'''

#with open() as f:
#在一定时间之后自动关闭句柄
'''with open ('文件操作',encoding='utf-8',mode='r') as f1:
print(f1.read())'''

#同时打开多个文件句柄
with open ('文件操作',encoding='utf-8',mode='r+') as f1,\
open ('私密联系方式',encoding= 'utf-8',mode='a+') as f2:
print(f1.read())
f2.write('666!!!!!!')

#改文件的5个步骤
#一,以读的模式 打开原文件 生成一个你文件句柄f1
#二,以写的模式 创建一个新文件 生成一个文件句柄f2
#三,读取原文件的内容 进行修改 并将修改后的内容写入新文件
#四,将原文件删除
#五,将新文件重新命名成 原文件的名字
#需要调用系统操作模块 os
#os.remove
#os.rename
'''import os
with open('文件操作',encoding='utf-8',mode='r') as f1,\
open('文件操作1',encoding='utf-8',mode='w') as f2:
old_data = f1.read()
new_data = old_data.replace('看电影','出国旅行')
f2.write(new_data)
os.remove('文件操作')
os.rename('文件操作1','文件操作')'''



猜你喜欢

转载自www.cnblogs.com/cavalier-chen/p/9470078.html
今日推荐