文件操作
Posted yzl2333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件操作相关的知识,希望对你有一定的参考价值。
-*- coding:utf-8 -*-
f = open(‘t2‘,mode=‘r‘,encoding=‘utf-8‘)
打开 第一个内容是文件的名字(必须是字符串)
mode 第二个内容是咱们对这个文件的操作方式 只读
encoding 第三个内容是咱们这个文件的编码集
f 文件句柄所有对文件的操作都是操作文件句柄 锅把
r模式 读取字符
content = f.read()
读 一次性全部读取
content1 = f.readline()
# 读取一行,但是有个 换行
print(content1)
content2 = f.readline()
print(content2)
content = f.readlines()
readlines 读取一行一行的,存放在列表里
print(content)
content = f.read()
# mode = ‘r‘ read里的内容就是表示读取的字符数量
print(content)
f = open(‘C:\Users\oldboy\Desktop\QQ.jpg‘,mode=‘rb‘)
f = open(r‘C:UsersoldboyDesktopQQ.jpg‘,mode=‘rb‘)
r 和 \ 一样都是转义
rb读取字节
从磁盘开始查找的就是绝对路径
C:UsersoldboyDesktopQQ.jpg
print(f.read())
f = open(‘QQ.jpg‘,mode=‘rb‘)
# 相对路劲 相对于 04 内容详解来查找的一种路径
print(f.read())
推荐写法 相对路径
f = open(‘t2‘,mode=‘r‘,encoding=‘utf-8‘)
print(f.read())
w 模式
f = open(‘t2.txt‘,mode=‘w‘,encoding=‘utf-8‘)
f.write(‘在网上也是这样。‘)
f.write(‘人生三个爽‘)
w模式 如果文件不存在就新建一个
覆盖写,写之前先把文件清空
wb 模式
f = open(‘QQ.jpg‘,mode=‘rb‘)
f1 = open(‘qq2.jpg‘,mode=‘wb‘)
f1.write(f.read())
a 模式 追加
f = open(‘t2‘,mode=‘a‘,encoding=‘utf-8‘)
f.write(‘相对路径‘)
文件最后添加内容
1.w只写 没有读的功能
f = open(‘t2‘,mode=‘w‘,encoding=‘utf-8‘)
f = open(‘1.doc‘,mode=‘rb‘)
print(f.read())
可读可写
r+ #读 写
w+ #写 读
a+ #追加 读
f = open(‘t2‘,mode=‘r+‘,encoding=‘utf-8‘)
print(f.read()) # 读内容
f.write("今天是周一,你们还棒啊")
f.write(‘"今天是周一,你们挺棒啊"‘)
print(f.read()) # 错误的示范
f = open(‘t2‘,mode=‘w+‘,encoding=‘utf-8‘)
f.write(‘老子今天上班了‘)
f.seek(0) #头 # 移动文件光标
print(f.read())
f = open(‘t2‘,mode=‘a+‘,encoding=‘utf-8‘)
f.seek(0)
print(f.read())
f.write(‘哈哈哈‘)
最常用的r+
f = open(r‘C:UsersoldboyPycharmProjectss19day6 2.txt‘,mode=‘r+‘,encoding=‘utf-8‘)
print(f.read()) # 读内容
f.write("今天是周一,你们还棒啊")
f = open(r‘..day6 2.txt‘,mode=‘r+‘,encoding=‘utf-8‘)
# .. 返回上一级
print(f.read()) # 读内容
f.write("今天是周一,你们还棒啊")
f = open(r‘..day6 2.txt‘,mode=‘r‘,encoding=‘utf-8‘)
print(f.read())
总结:
r 只读 不能写
read() 读取全部
模式是r的时候 read(3) 就是读取3个字符
模式是rb的时候 read(3) 就是读取3个字节
readline() 读取一行
readlines() 存放在一个列表中
w 只写 不能读
覆盖写,先清空文件的内容,在写
当文件不存在的时候,创建一个文件
a 追加写 不能读
写的内容一直都在文件的末尾
r+ 读写
错误示范 先写后读
正确的是 先读后写
w+ 写读
写读的时候是读不到内容的,除非移动光标
a+ 追加写 读
写读的时候是读不到内容的,除非移动光标
最常用: r,w,a,r+,a+
f = open(‘t2‘,mode=‘r‘,encoding=‘utf-8‘)
# print(f.read())
msg = f.read()
print(msg)
f.close()
f = open(‘t2‘,mode=‘w‘,encoding=‘utf-8‘)
# print(f.read())
msg = f.write(‘有问题就要问呢,哥哥们‘) # 向文件里写了多少个字符
f.flush() # 刷新
print(msg)
f.close()
with open(‘t2‘,mode=‘w‘,encoding=‘utf-8‘)as f:#上下文管理 --- 面试题
msg = f.write(‘小强和刘申‘)
print(msg)
不用你自动关闭文件
其他操作:
with open(‘t2‘,‘rb‘)as f:
print(f.read())
print(f.seek(0)) # 文件头部
print(f.read(1))
print(f.tell()) # 查看光标的位置 数的是字节
with open(‘t2‘,‘r‘,encoding=‘utf-8‘)as f:
print(f.read())
f.seek(2) # 字节
f.seek(0,1)
双个数字
0,0 文件头部
0,1 当前位置
0,2 文件尾部
单个数字
f.seek(6) # 字节
print(f.read())
print(f.read(1))
print(f.tell()) # 查看光标的位置 数的是字节
with open(‘t2‘,‘r+‘,encoding=‘utf-8‘)as f:
f.truncate(9) # 3个字符 指定字节之后的门内容全部删除
f = open(‘t2‘,mode=‘r+‘,encoding=‘utf-8‘)
print(f.read(4))
print(f.tell())
f.truncate()
import os
os.rename(‘t2‘,‘t3‘)
with open(‘t3‘,‘r‘,encoding=‘utf-8‘)as f,
open(‘t5‘,‘a‘,encoding=‘utf-8‘)as f1:
msg = f.read() # 将源文件复制一份
msg = msg.replace(‘好‘,‘困‘)
f1.write(msg)
import os
os.remove(‘t3‘) # 删除原数据
os.rename(‘t5‘,‘t3‘)
with open(‘t3‘,mode=‘r‘,encoding=‘utf-8‘)as f,
open(‘t5‘,mode=‘a‘,encoding=‘utf-8‘)as f1:
for i in f:
i = i.strip().replace(‘父‘,‘爸爸‘)
f1.write(i)
print(f.readline().strip())
with open(‘t3‘,mode=‘r+‘,encoding=‘utf-8‘)as f:
f.read(4) #
print(f.tell()) # 字节 4 * 3 == 12
f.truncate(12)
以上是关于文件操作的主要内容,如果未能解决你的问题,请参考以下文章