# ***********第一部分***********
# 1.读文件,首先利用一个变量承装文件 最主要注意的是encoding的问题,看看是否是格式问题
f = open(file='D:\study\少妇白洁.txt', mode='r', encoding='GBK') # file等关键字可以直接省略 mode 指模式
# 对变量使用方法read进行读取
data = f.read()
# 输出
print(data)
# 关闭
f.close()
# ***********第二部分***********
# 上回打开文件的时候会遇到编码问题,如何避免这种问题(去掉指定encoding会默认utf-8)
f = open(file='D:\study\少妇白洁.txt', mode='rb') # 读取模式更改为rb, 略去指定编码,将以二进制读取文件
data = f.read()
print(data)
f.close()
# ***********第三部分***********
# 导入第三库查看编码规则:chardet,
# 在cmd界面找到pip的安装路径,在python安装路径下。输入:pip3 install chardet下载
# pycharm软件打开:file-setting-project-interproject点击+下载
import chardet
f = open(file='D:\study\少妇白洁.txt', mode='rb') # 使用chardet模块必须以rb模式读取文件
result = chardet.detect(f.read())
print(result)
f.close()
# 查出编码之后,进行解码
f = open(file='D:\study\少妇白洁.txt', mode='rb')
data = f.read()
print(data.decode('GBK'))
# ***********第四部分***********
# 文件的写入:新建内容
f = open("D:\study\僻邪剑谱.txt", "w", encoding="utf-8")
data = f.write("第一章 欲练此功,必先自宫")
f.close()
# 文件的追加:保留原有文件 a的意思是append
f = open("D:\study\僻邪剑谱.txt", 'a')
data = f.write("\n第二章 不宫也行")
f.close()
# 文件的循环:文件过大时,需要边缓存边查看
fi = open("D:\study\僻邪剑谱.txt", "r")
data = fi.read()
for line in data:
print(line)
fi.close()
# ***********第五部分***********
# 文件混合读写模式
f = open("D:\study\少妇白洁.txt", 'r+', encoding='utf-8')
data = f.read()
print("前:", data)
f.write("访问网址:w'w'w.baidu.com")
print(f.read()) # 文件中存在,但是读不出,因为此时光标在最后一层,需要用seek方法回到前面
f.seek(0)
print(f.read())
f.close()
# 光标 seek 指定光标位置 tell 输出光标位置
# 文件操作方法
# truncate 从开头到光标当前位置截断
# flush 将缓存中的内容读到磁盘
# readline 执行一次读一行文件内容
# ***********第六部分***********
# 文件修改:通过循环进行替换
import os
f_old_name = "D:\study\僻邪剑谱.txt"
f_new_name = "%s.new" % f_old_name
old_name = "望海潮"
new_name = "王海潮"
f_o = open(f_old_name, 'r', encoding='utf-8')
f_n = open(f_new_name, 'w', encoding='utf-8')
for line in f_o:
if old_name in line:
line = line.replace(old_name, new_name)
f_n.write(line)
f_n.close()
f_o.close()
os.rename(f_new_name, f_old_name)
最重要的还是要多写多练,有的时候看着视频觉得代码一模一样,但是自己写的时候会遇到各种问题,解决问题的过程就是自己慢慢提高的过程