day07学习 Python文件操作

本文详细介绍了Python中的文件操作,包括文件的打开、读写模式、数据持久化以及二进制文件的处理。讲解了如何进行文本文件的读写,如read()、readline()、readlines()等方法,并展示了如何处理二进制文件,如图片的读取和下载。此外,还探讨了文件指针的概念及其在文件操作中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件操作

数据持久化

数据从瞬时状态转换为持久状态

文件打开操作

open(参数1,参数2,参数3...) - 打开文件,打开的是一个文件对象

  • 参数1:路径和文件名

    • 语法: .表示当前文件夹(可以省略不写);..表示返回上一级
    • 文件夹和文件夹之间以及文件夹和文件之间需要使用\间隔
    • 路径有相对路径和绝对路径之分
      • 相对路径:以当前所找参照物为基础,另一个文件相对于参照物的所在位置,应该使用/
      • 绝对路径:以磁盘为参照物,使用\ 例:‘D:\python\python2204\pythonProject\day07\test’
    假设目前我处于文件夹B中,如果要找到文件A(文件A位于文件夹A中)
    ../文件夹A/文件A
    open(r'./test/文件1.txt')
    
  • 参数2:文件打开的方式(读和写)

    tb文件展示形式rbwbabbrbwba表示以字节形式操作文件

    • t: 文本

    • b: 字节

      bytes: b'.....' ----> 字节

    raw+等, 文件编辑方式,等价于rtwtattrtwta -----> t默认,可省略

    • r:只读,如果文件不存在,报错
    • w:只写,文件不存在,先自动创建;文件存在,先清空(如果某个文件夹不存在,不会创建文件夹)
    • a:只写,如果该文件已存在,文件指针将会放在文件的结尾,追加;如果该文件不存在,创建新文件进行写入
    • +:可读可写,将raw变为可读可写的符号:r+a+w+;Python操作文件要么读,要么写,不能同时读写
  • 参数3:文件打开的编码形式utf-8

    encoding = 'utf-8'

    f = open(r'./test/文件1.txt', 'r', encoding = 'utf-8')
    f = open(r'./01 homework.py', 'r', encoding = 'utf-8')
    print(f)
    # read()从文件对象中读信息
    result = f.read()
    print(result, type(result))     # <class 'str'>
    f = open(r'../../notes/Python2204.md', 'r', encoding = 'utf-8')
    result = f.read()
    print(result)
    

默认为文本模式,如果要以二进制模式打开,加上 b

所有文件在内存中以二进制形式保存的。

打开图片操作

f1 = open('./test/管理员.jpg', 'r', encoding = 'utf-8')
result = f1.read()
print(result)       # UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

f1 = open('./test/管理员.jpg', 'rb')
result = f1.read()
print(result, type(result))     # <class 'bytes'>

文本文件写操作

Python操作文件流程

  1. 新建xxx名字的文件
  2. 写入内容
  3. 保存关闭

写操作

f = open('./test/咏鹅.txt', 'w', encoding='utf-8')
str_1 = '\t咏 鹅\n\t骆宾王\n鹅鹅鹅,曲项向天歌。\n白毛浮绿水,红掌拨清波。'
print(str_1)
f.write(str_1)
f.write('\n咏 鹅')
f.close()       # 如果不写关闭操作,会影响进程。
# f.write('1')        # 关闭文件之后再操作会报错 ValueError: I/O operation on closed file. 输入输出异常
# I/O -- Input/Out

文本文件读操作

  • read() - 一次性读所有内容,读出结果为字符串

    read(size) - 从文件读取指定的字节数,如果未给定或为负则读取所有。

  • readline() - 一次读一行,读出结果为字符串

    readline(size) - 读取该行指定的字节数。

  • readlines() - 一次读全部内容,每一行内容作为列表中的一个元素

    readlines(sizeint) - 读取文件全部内容的指定的字节数并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区

f = open('./test/咏鹅.txt', 'r', encoding='utf-8')
print(f.read())

print(f.readline())

print(f.readlines())
f.close()

指针:文件操作时指针默认在文件开始位置,指针会随着文件操作不断变化。

图片文件读写操作

读取图片

f1 = open('./test/管理员.jpg', 'rb')
result = f1.read()
print(result)
f1.close()

下载图片

f2 = open('./test/photo1.jpg', 'wb')
f2.write(result)
f2.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值