python文件操作
基本语法
f = open("文件路径",mode="模式",encoding="编码")
f.read()
解析
open() 调用操作系统打开文件
mode # 对文件的操作方式
encoding # 文件的编码 -- 存储编码要统一
# win -- gbk
# linux -- utf-8
# mac -- utf-8 最常用的就是utf-8
# f 文件句柄 -- 操作文件的相当于锅把
文件操作怎么用?
读 r
写 w清空写 ,a追加写
读 rb
写 wb ab
文件的读r
# f.read() # 全部读取
# f.read(3) # 字符读取
# readline(3) # 读取一行内容中多个字符
# f.readlines()) # 一行一行读取,存储到列表中
是换行
with open('cs.txt',encoding='utf-8',mode='r') as f1:
# print(f1.read())#全部读取 注意 一般不这么读 耗内存
print(f1.read(1))# 字符读取 注意不是读取字节 符号也是一个字符
# print(f1.readline())#读一行 注意会记录光标
是换行
# with open('cs.txt', encoding='utf-8', mode='r') as f1:
# for i in f: # 迭代读取 一行一行读取 -- 防止内存溢出
# print(i)
# 路径
# F:a111.txt 绝对路径 从磁盘的根处查找
# 相对路径 相对于当前文件进行查找的
# repr() #函数将对象转化为供解释器读取的形式。
dict = {'runoob': 'runoob.com', 'google': 'google.com'}
print(repr(dict),type(repr(dict)))
# import os
# print(os.getcwd()) # 查看当前工作路径
# 另一种打开文件的方式.
# with open("day8",mode="r",encoding="utf-8") as f,
# open("a",mode="w",encoding="gbk") as f1:
# print(f.read())
# f1.write("真饿!")
文件的写w,a
# 写 w 清空写 a 追加写
# f = open("cs.txt",mode="w",encoding="utf-8")
# f.write("123")
# f.close() # 关闭文件
# a 追加写 追加到末尾
# with open('cs.txt',encoding='utf-8',mode='a') as f1:
# # f1.write('你最棒')
文件读写非文本wb
# rb ,wb,ab 不能指定编码
# print(f.read()) # read() 全部读取
# with open('cs.jpg',mode='rb') as f1:
# print(f1.read())
# print(f1.read(3)) # 读取的是字节
import requests
import os
ret = requests.get("http://www.521609.com/uploads/allimg/151124/1-1511241G251317.png")
a=os.path.dirname(os.path.dirname(__file__))
b=os.path.join(a,'1.jpg')
with open(b,mode='wb') as f1:
f1.write(ret.content)
文件操作+模式
# r 读 r+ 读写 注意,要先读后写 如果写写在读 光标会在最后就读不出内容了
# w 写 w+ 写读 真的废物
# a 写 a+ 写读
# r+
#正确示范 -- 后期开发中使用频率比较低
# f = open("day8",mode="r+",encoding="utf-8")
# print(f.read())
# f.write("脑瓜疼啊脑瓜疼")
调整文件光标
# 在a 模式 读完后关标在最后 所以我们要注意这些小问题
# 查看光标: tell() 返回值 返回的就是当前光标的位置
# 移动光标:
# seek(0,0) 文件开始位置
# seek(0,1) 光标的当前位置
# seek(0,2) 文件末尾位置
# seek(3) 按照字节调节 使用utf-8是3 gbk是2
文件的修改
原理就是边读边写
# 不好用 好耗内存
# with open("day8",mode="r+",encoding="utf-8")as f:
# content = f.read()
# content = content.replace("您","你")
# f.seek(0,0)
# f.write(content)
# 利用for循环 边读边写 与os模块
# with open("cs.txt",mode="r",encoding="utf-8")as f,
# open("cs_bak.txt",mode="a",encoding="utf-8")as f1:
# for i in f:
# content = i.replace("你","我")
# f1.write(content)
#
# import os
# os.remove("cs.txt") # 原数据可以使用rename来做备份
# os.rename("cs_bak.txt","cs.txt")
yuan=r'C:Users86131Desktop程序员之路笔记系统测试学习测试方法.md'
gai=r'C:Users86131Desktop程序员之路笔记系统测试学习测试方法.md.bak'
with open(yuan,mode="r",encoding="utf-8")as f,
open(gai,mode="a",encoding="utf-8")as f1:
for i in f:
content = i.replace("回到顶部","")
f1.write(content)
import os
os.remove(yuan) # 原数据可以使用rename来做备份
os.rename(gai,yuan)