当前位置: 首页 > news >正文

六、文件操作

文章目录

  • 介绍
    • 文本文件
      • json文件
        • 读取
        • 写入
    • 二进制文件
  • 操作步骤
    • 打开文件`open`
      • `with open`
    • 读/写文件
      • 读文件`read`
      • 写文件`write`
    • 关闭文件`close`
  • 举例

介绍

计算机中文件的存储是以**二进制(0、1)**形式存储的

文本文件

能够使用文本编辑软件打开的文件,如txt、py、json等

json文件

 import json

JavaScript Object Notation,基于文本,独立于语言的轻量级的数据交换格式。因此,作为文本文件是可以直接使用read()和write(),返回的是字符串,实际使用存在不便。

  1. json文件的后缀是.json
  2. json的主要数据类型为对象{}(对应python中的字典)和数组[](对应python中的列表),可以互相嵌套,也有其他数据类型。
  3. 一个json文件即一个对象或数组
  4. json中的对象由键值对组成,每个数据之间用逗号隔开,最后一个数据后不能写逗号
  5. json中的字符串必须使用双引号
读取
json.load(file)

返回的是字典或列表

写入
json.dump(数据内容,文件对象)
# 显示中文,ensure_ascii=False
# 显示缩进,indent=num

在这里插入图片描述

在这里插入图片描述

二进制文件

不能使用文本编辑软件打开的,如exe、mp3等

操作步骤

打开文件open

将文件从磁盘/硬盘中打开,读取到内存中

 open(file,mode='r',encoding=None)

1、file,需要打开的文件路径
相对路径:相对当前代码文件所在的路径 ./
绝对路径:从根目录开始的路径
2、mode,打开文件的方式,默认参数是r
r:read,只读
w:write,只写
a:append,文件存在则末尾追加,文件不存在则创建
还有其他模式…
3、encoding,编码方式,文本同二进制的转换
utf-8:常用,将一个汉字转换为3个字节的二进制
gbk:将一个汉字转换为2个字节的二进制
还有其他编码方式…
4、返回值
返回的是文件对象,通过该对象进行后续文件操作

with open

不用手动书写关机文件的代码,会自动进行关闭

with open(file,mode,encoding='utf-8') as filename:
	# 文件操作
#操作结束后自动关闭文件

读/写文件

若读写的文件不存在会报错

读文件read

读取文件中的内容,文件的打开方式需为r,返回值为读取的内容

file.read()

写文件write

向文件写入指定内容,文件的打开方式需为w或a,返回值为写入文件的字符数,一般不关注

file.write(str)

关闭文件close

清理文件占用的资源,同时保存文件,文件关闭后无法使用文件对象

file.close()

举例

import random

with open('data.txt','w',encoding='utf-8') as f:
    for i in range(10):
        num=random.randint(1,20)
        f.write(f'{num},')

with open('data.txt','r',encoding='utf-8') as f:
    data=f.read()
    # 去掉最后一个逗号
    data=data[:-1]
    # 分隔字符串,返回数字列表
    dataList=data.split(',')
    numList=[]
    for i in dataList:
        numList.append(int(i))
    numList.sort(reverse=True)
    # 降序后取前五数字导入新文件中
    with open('data1.txt','w',encoding='utf-8') as f1:
        newList=numList[:5]
        for i in newList:
            f1.write(f'{i},')

相关文章:

  • MYSQL MVCC详解
  • Python 二分查找(bisect):排序数据的高效检索
  • 四层 PCB 在工业控制设备中的叠层设计要点
  • React 把一系列 state 更新加入队列
  • 如何看电脑的具体配置?
  • 网络7 配置网卡 路由表
  • 深入解析UML图:版本演变、静态图与动态图详解
  • ctfshow做题笔记—栈溢出—pwn75~pwn79
  • 手动关闭ArcGIS与ArcGIS Online连接的方法
  • 基于Python的​​LSTM、CNN中文情感分析系统
  • 【Python爬虫】简单案例介绍1
  • vscode中C++ debug显示opencv图片的插件
  • 非类型模板参数详解
  • react tailwindcss最简单的开始
  • KNN算法深度解析:从决策边界可视化到鸢尾花分类实战
  • bat与powershell语法教程以及容易遇到的坑
  • go语言gRPC使用流程
  • AI数据分析的优势分析
  • 浙江大学DeepSeek系列专题线上公开课第二季第五期即将上线!deepseek人文艺术之美专场来啦!
  • 什么是COSMIC功能点评估方法
  • 文理医工“四轮驱动”,复旦六大新工科创新学院核心团队均亮相
  • 梅德韦杰夫:如果欧盟和美国 “撒手不管”,俄罗斯会更快解决俄乌冲突
  • 黄山旅游:去年黄山景区累计接待进山游客492.24万人,同比增长7.6%
  • 首批换药患者已出现,两大减肥药巨头比拼的是什么?
  • 神舟二十号船箭组合体垂直转运正在进行,近日将择机发射
  • 游客被落景区后退团遭拒:系借用资质揽客,管理部门却称退款无法可依