python文件操作

1. 读文件

1.1 读文本文件

# 1.打开文件
file_object = open('info.txt', mode='rt', encoding='utf-8')

# 2.读取文件内容,并赋值给data
data = file_object.read()

# 3.关闭文件
file_object.close()

print(data)

1.2 读图片等非文本内容文件

file_object = open('a.png', mode='rb')
data = file_object.read()
file_object.close()

print(data)

注意:

  • 区分绝对路径和相对路径。相对路径是相对某一个位置而言的, 绝对路径是从硬盘分区开始的。
  • 读文件时,若文件不存在则会报错
    可以先进行判断文件是否存在,再进行读操作,代码如下所示。
# 判断路径是否存在?
import os
file_path = "info.txt"
exists = os.path.exists(file_path)
if exists:
    # 1.打开文件
    file_object = open('info.txt', mode='rt', encoding='utf-8')
    # 2.读取文件内容,并赋值给data
    data = file_object.read()
    # 3.关闭文件
    file_object.close()
    print(data)
else:
    print("文件不存在")

2. 写文件

2.1 写文本文件

file_object = open("t.txt", mode='wt', encoding='utf-8')

file_object.write("文本文件")

file_object.close()

2.2 写图片等非文本文件

f1 = open('a1.png',mode='rb')
content = f1.read()
f1.close()

f2 = open('a2.png',mode='wb')
f2.write(content)
f2.close()

注意:

  • 文件不存在时,w模式会新建然后再写入内容;文件存在时,w模式会清空文件再写入内容

3. 文件打开模式

在这里插入图片描述
关于文件的打开模式常见应用有:

  • 只读:rrtrb (用)
    • 存在,读
    • 不存在,报错
  • 只写:wwtwb(用)
    • 存在,清空再写
    • 不存在,创建再写
  • 只写:xxtxb
    • 存在,报错
    • 不存在,创建再写。
  • 只写:aatab【尾部追加】(用)
    • 存在,尾部追加。
    • 不存在,创建再写。
  • 读写
    • r+、rt+、rb+,默认光标位置:起始位置
    • w+、wt+、wb+,默认光标位置:起始位置(清空文件)
    • -x+、xt+、xb+,默认光标位置:起始位置(新文件)
    • a+、at+、ab+,默认光标位置:末尾

4. 常见功能

  • 读所有
f = open('info.txt', mode='r',encoding='utf-8')
data = f.read()
f.close()
  • 读n个字符(字节)
f = open('info.txt', mode='r', encoding='utf-8')
data = f.read(1)# 读1个字符
f.close()

print(data) 
  • readline,读一行
f = open('info.txt', mode='r', encoding='utf-8')
v1 = f.readline()
print(v1)
v2 = f.readline()
print(v2)
f.close()
  • readlines,读所有行,每行作为列表的一个元素
f = open('info.txt', mode='rb')
data_list = f.readlines()
f.close()
print(data_list)
  • 循环,读大文件(readline加强版)
f = open('info.txt', mode='r', encoding='utf-8')
for line in f:
    print(line.strip())
f.close()
  • write,写
f = open('info.txt', mode='a',encoding='utf-8')
f.write("写文件")
f.close()
  • flush,刷到硬盘
f = open('info.txt', mode='a',encoding='utf-8')
while True:
    # 不是写到了硬盘,而是写在缓冲区,系统会将缓冲区的内容刷到硬盘。
	f.write("刷到硬盘")
    f.flush()
f.close()
  • 移动光标位置(字节)
f = open('info.txt', mode='r+', encoding='utf-8')

# 移动到指定字节的位置
f.seek(3)
f.write("移动光标位置")

f.close()

注意:在a模式下,调用write在文件中写入内容时,永远只能将内容写入到尾部,不会写到光标的位置。

  • 获取当前光标位置
f = open('info.txt', mode='r', encoding='utf-8')
p1 = f.tell()
print(p1)  # 0
f.read(3)  # 读3个字符 3*3=9字节
p2 = f.tell()
print(p2)  # 9

f.close()

5. 上下文管理

之前对文件进行操作时,每次都要打开和关闭文件,比较繁琐且容易忘记关闭文件。如果不对文件进行关闭,会造成系统资源的浪费,以后再进行文件操作时,可以使用with上下文管理,它可以自动实现关闭文件。

with open("info.txt", mode='rb') as file_object:
    data = file_object.read()
    print(data)

文章参考视频:https://www.bilibili.com/video/BV1Uh411a7vM?spm_id_from=333.999.0.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值