一、初始文件处理(写文件)
"""
第一步: 找到文件第二步:打开文件第三步:操作:先读后写第四步:关闭
"""
f = open("学习","w",encoding="utf-8") #f是文件操作符 文件句柄 文件操作对象# f2 = open("学习2","w",encoding="utf-8")
# f2.close()
# open打开文件是依赖操作系统提供的途径
# 操作系统有自己的编码,open在打开文件的时候默认使用的是操作系统的编码
# eg:win10之前用的GBK mac、Linux使用的是utf-8
f.write("hello,world\n") #"\n"是Python语法的换行符
f.write("123456")
f.write("00090900") #如果在写文件的时候我们需要写数字也必须把数值转换成字符串
f.write("\nassfffghghgdfgf") #"\n"换行符放前边也可以
f.write("\n你好,世界") #凡是涉及到储存读写,字符集用utf-8
f.write("\n天气不错")# print(f.writable()) #判断文件是否可写
# print(f.readable()) #判断文件是否可读f.close()# 找到文件详解:
# 文件与Py的执行文件如果是在相同路径下,直接用文件的名字就可以打开
# 文件与Py的执行文件如果是不在相同路径下,用绝对路径找到文件,文件的路径需要用取消转译的方式来表示:
# 方法一(\\):'C:\\Users\\Administrator\\Desktop\\s1_tmp.txt'
# 方法二(r''):r'C:\Users\Administrator\Desktop\s1_tmp.txt'
# f = open(r'C:\Users\Administrator\Desktop\s1_tmp.txt','w',encoding='utf-8')
# f.write("哈哈哈哈")
# f.close()# 关闭文件详解:
# 操作系统级别的关闭文件资源:f.close() 必须写
# del f 主动释放一个Python程序内存中的变量 可用可不用
二、初始文件处理(读文件)
#第一步:打开文件
# f = open('学习','r',encoding='utf-8') 两种方法打开文件都可
f = open('学习',encoding='utf-8')
#1.读文件的第一种方式:read方法,用read方法会一次性读出文件所以内容
# content = f.read()
# print("read:",content)
# 2.读文件的第二种方式:读一部分内容:用read(n),指定读取n个单位# print(f.read(11))
#3.读文件的第三种方式: f.readline() 是按照行读,每次执行就会往下读一行#.strip() 是去掉空格、制表符、换行符
# content = f.readline()
# print(content)
# print("readline:",content.strip())# content2 = f.readline()# print(content2.strip())# content3 = f.readline()# print(content3.strip())
#4.读文件的第四种方式: .readlines() ,返回的是列表, 将文件中的每一行作为列表中的每一项返回一个列表
# content = f.readlines()
# print("readlines:",content)#第二步:读取文件: 5、读:这是最常用的方法
for l in f:print(l.strip())# 第三步:关闭文件
f.close()
三、.strip()
'''
f = open('shoplist',encoding='utf-8')i = []
for l in f:if l.strip():line = l.strip()goods_lst = line.split()goods_dict = {"name": None, "价格": None}goods_dict['name']=goods_lst[0]goods_dict['价格']=goods_lst[1]i.append(goods_dict)
print(i)
f.close()
''''''
#去除多层空格、制表符、换行符
for i in f:if i.strip(): #如果成立代表有内容 只显示有内容的行print(i.strip())
'''
四、打开文件的几种模式
#b: 图片、音乐、视频等任何文件
# 传输:上传、下载
# 网络编程
'''
f = open('学习','rb')
content = f.read()
print(content)
f.close()
'''#追加可读 极少用# f = open('shoplist','a+',encoding='utf-8')
#
# # f.write("\ncomputer 6000 5")
# # f.write("\ncoke 120 5")
# # f.write("\nperpie 333 5")
# print(f.readable())
# f.close()#r+ 可读可写
# 1.先读后写 写是追写
# 2.先写后读 从头开始写 (会从头开始覆盖)
# f = open('学习','r+',encoding="utf-8")
# # line = f.readline()
# # print(line)
# f.write("\n0000000000000000000000000000")
# f.close()#w+ 可写可读 :一上来文件就清空 ,
# 1、尽管可读,但是读出来的内容是新写入的内容
# 2、 他的光标是在最后的 需要主动移动他的光标才可读
# f = open('学习','w+',encoding="utf-8")
# f.write("\nABC\n")
# f.write("哈哈哈")
#
# f.seek(0) # seek() 是指针 就是光标的位置
# print(f.read())
# f.close()#a+ 追加可读
# f = open('学习','a+',encoding="utf-8")
# f.write("\n娃哈哈")
# f.seek(0)
# print(f.read())
# f.close()# 一般情况下:文件操作,要么读 要么写; 很少会用到读写 写读同时用的
# 常用的:
# r w a
# rb wb ab 不需要指定编码f = open('学习','rb')
content = f.read()f.close()
print(content)
f2 = open('学习2','wb')
f2.write(content)
f2.close()
五、文件内的光标移动(.seek() .tell())
f = open('学习','r+',encoding='utf-8')
# seek 光标移动到第几个字节的位置
# f.seek(0) #移动到最开始
# f.seek(0,2) #这个是移动到最末尾
# f.truncate(5) #从文件开始的位置只保留指定字节的内容
f.write("中华人民共和国合同法规定")
# content = f.readline()# print(content.strip())
# print(f.tell()) #tell() 告诉我们当前光标所在位置
# print(f.seek(4)) #光标移动到三个字节的地方content = f.read(1) #读一个字符
print('***',content,'***')
content = f.readline()
print(content.strip())
print(f.tell())f.close()
六、修改文件
'''
#文件的修改
#1.创建一个新文件
f2 = open('原文件.bak','w',encoding='utf-8')#2.把原来的文件中的内容读出来
f = open('原文件',encoding='utf-8')
old_content = f.read() #原来的内容\n
#3.操作读出来的字符串,把字符串中的内容替换掉
new_content = old_content.replace("新","原来")
#4.把替换之后的内容写到新文件里
f2.write(new_content)
f.close()
f2.close()
#5.删除原文件,新文件重命名成源文件的名字
import os #引入os模块
os.remove("原文件") #删除文件
os.rename('原文件.bak','原文件') #重命名 执行的是replace("老内容","新内容")
'''
'''
# 创建新文件
f2 = open('原文件.bak','w',encoding='utf-8')
f = open('原文件',encoding='utf-8')
for i in f:new_content = i.replace('原来','新')f2.write(new_content)
f.close()
f2.close()
import os
os.remove("原文件")
os.rename('原文件.bak','原文件')
''''''
#进阶例子
#1.创建一个新文件
f2 = open('原文件.bak','w',encoding='utf-8')
#2.把原来的文件中的内容读出来
f = open('原文件',encoding='utf-8')
count = 0
for line in f:if '原来' in line and count == 0:new_line = line.replace('原来','新')f2.write(new_line)count = 1else:f2.write(line)
f.close()
f2.close()
import os
os.remove('原文件')
os.rename('原文件.bak','原文件')
'''# #with 操作文件 最常用方法之一
# with open('原文件',encoding='utf-8') as f:
# # content = f.read()
# # print(content)
# for line in f:
# if line.strip():
# print(line.strip())# with open('原文件',encoding='utf-8') as f,open('原文件.bak','w',encoding='utf-8') as f1:
# for line in f:
# new_line = line.replace('原来','新')
# f1.write(new_line)
# import os
# os.remove('原文件')
# os.rename('原文件.bak','原文件')'''
with open('原文件',encoding='utf-8') as f,open('原文件.bak','w',encoding='utf-8') as f1:for i in f:new_content = i.replace('新','原来')f1.write(new_content)
import os
os.remove('原文件')
os.rename('原文件.bak','原文件')
'''#修改文件#read()#for循环的形式逐行修改#只修改一行的内容,其他不变 —— 扩展例子
#with语句 == 文件的打开和关闭#根据个人喜好