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

python - 文件操作

1. 概念

  1. 计算机内存通常分为两种类型:主存储器和辅助存储器。

    主存储器是计算机中最重要的存储器类型之一。它是计算机中用于存储正在运行的程序和数据的存储器。主存储器通常是易失性的,这意味着当计算机关闭时,其中存储的数据将被删除。主存储器通常是随机访问存储器(RAM)的形式,这意味着计算机可以随时访问存储器中的任何位置。辅助存储器是计算机中的另一种存储器类型。它通常是非易失性的,这意味着即使计算机关闭,其中存储的数据也不会丢失。辅助存储器通常用于存储大量的数据和程序,例如操作系统,应用程序和文件。常见的辅助存储器设备包括硬盘驱动器,固态硬盘,光盘和USB闪存驱动器。

  2. 数据持久化

    数据持久化是指将数据保存在磁盘或其他非易失性存储介质中,以便在计算机关闭或程序终止时仍然可以访问该数据。这与将数据保存在内存中不同,因为内存通常是易失性的,这意味着当计算机关闭或程序终止时,其中存储的数据将被删除。

    在编程中,数据持久化通常是通过将数据写入文件或数据库来实现的。文件是一种简单的数据持久化方法,可以将数据保存在文本文件或二进制文件中。数据库是一种更复杂的数据持久化方法,可以将数据保存在结构化的表中,并提供高级查询和数据管理功能。

    在Python中,您可以使用内置的pickle模块将Python对象序列化为字节流,并将其写入文件以进行持久化。您还可以使用第三方库,例如SQLAlchemy和Django ORM,将Python对象映射到关系数据库中。

    1. 常见的数据持久化:数据库,Excel文件,csv文件,txt文件 ,json文件,plist文件

2. 文件操作

文件操作需要以下几步:

  1. 打开文件
  2. 读取或写入文件
  3. 关闭文件

在Python中,可以使用open()函数打开文件,使用read()write()方法读取或写入文件,使用close()方法关闭文件。

以下是一个简单的例子:

with open('path/to/file', 'r') as f:content = f.read()# do something with content
'''
在这个例子中,我们使用with语句打开文件,这样可以确保文件在使用完毕后被正确关闭。open()函数的第一个参数是文件路径,第二个参数是打开文件的模式,'r'表示读取模式,'w'表示写入模式,'a'表示追加模式。
'''
  1. open(路径,文件打开方式,encoding=文本文件编码方式)

    # 找不到会报错
    open(/Users/shangjianweidemacbook/Desktop/)
    
    1. 绝对路径和相对路径

      相对路径中的.表示当前目录,..表示上一级目录。

      例如,假设当前工作目录是/home/user,那./file.txt表示/home/user/file.txt../file.txt表示/home/file.txt

      # 绝对路径
      open(/Users/shangjianweidemacbook/Desktop/)
      # 相对路径
      open(../Desktop/)
      
    2. 打开方式

      • r 只读模式,打开文件后只能读取文件内容,不能修改文件内容。

      • w 写入模式,打开文件后可以写入文件内容,如果文件不存在则创建文件,如果文件已存在则清空文件内容。

      • a 追加模式,打开文件后可以在文件末尾追加内容,如果文件不存在则创建文件。

      • x 独占模式,打开文件时如果文件已存在则抛出异常,如果文件不存在则创建文件。

      • b 二进制模式,打开文件时以二进制模式读取或写入文件内容。

      • t 字符串模式,独到的数据和写入文件的数据必须是字符串(如果不赋值默认为t)

      # 以只读模式打开文件
      with open('path/to/file.txt', 'r') as f:content = f.read()print(content)# 以写入模式打开文件
      with open('path/to/file.txt', 'w') as f:f.write('Hello, world!')# 以追加模式打开文件
      with open('path/to/file.txt', 'a') as f:f.write('Hello, world again!')
    3. 文本文件编码方式

      在Python中,可以使用open(encoding = 'utf-8')函数打开文件时指定文件的编码方式。

      1. 常见的文本文件编码方式

        • utf-8
        • gbk
      2. 不同的文本文件编码方式在保存同一个符号的编码值的时候采用的字节数不同、

      3. 原则是存进去的时候用的什么编码方式,读的时候就用什么编码方式

        • 在Python中,可以使用chardet模块来检测文件的编码方式。chardet模块可以自动检测文件的编码方式,并返回一个包含编码方式和可信度的字典。
        • 以下是一个简单的例子:
        import chardet# 检测文件的编码方式
        with open('path/to/file', 'rb') as f:content = f.read()result = chardet.detect(content)# 打印检测结果
        print(result['encoding'], result['confidence'])
  2. 文件读操作 文件对象.read 从读写位置开始到文件结束

    读操作会改变光标位置

    with open('path/to/file.txt', 'r') as f:content = f.read()
    # 将读写位置移动到开头
    f.seek(0)
    # 读一行
    f.readline()
    
  3. 文件写操作文件对象.write

  4. 关闭文件文件对象.close

    文件关闭之后就不能再操作文件

相关文章:

python - 文件操作

1. 概念 计算机内存通常分为两种类型:主存储器和辅助存储器。 主存储器是计算机中最重要的存储器类型之一。它是计算机中用于存储正在运行的程序和数据的存储器。主存储器通常是易失性的,这意味着当计算机关闭时,其中存储的数据将被删除。主存…...

docker打包golang应用

一、错误的打包方式在本地环境编译,然后将可执行程序放入 alpine(docker.io/alpine:latest)准备web程序package mainimport ("fmt""net/http" )func main() {server : &http.Server{Addr: ":8888",}http.HandleFunc("/"…...

redis 内容总结

目录redis 内容列举Redis和Memcached比较Redis简介1、Redis 数据结构2、Redis的持久化机制3、Redis 内容管理(淘汰策略/删除策略)4、Redis 事务5、Redis 缓存三大问题6、Redis 集群7、Redis 应用redis 内容列举 官网:https://redis.io/ 中文…...

贪心算法(一)

一、概念 贪心算法的核心思想是,在处理一个大问题时,划分为多个局部并在每个局部选择最优解,并且认为在每个局部选择最优解,那么最后全局的问题得到的就是最优解。 贪心算法可以解决一些问题,但是不适用于所有问题&a…...

【栈和队列OJ题】有效的括号用队列实现栈用栈实现队列设计循环队列

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:数据结构 🎯长路漫漫浩浩,万事皆有期待 文章目录OJ题1.有效的括号1.1…...

kuernetes 资源对象分析报错

文章目录1. pod 状态1.1 容器启动错误类型1.2 ImagePullBackOff 错误1.3 CrashLoopBackOff1.4 Pending2. Service 连接状态3. Ingress 连接状态1. pod 状态 创建一个 pod-status.yaml apiVersion: v1 kind: Pod metadata:name: runninglabels:app: nginx spec:containers:- na…...

动态内存的开辟

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C 🔥座右铭:“不要等到什么都没有了,才下…...

【蓝桥杯-筑基篇】搜索

🍓系列专栏:蓝桥杯 🍉个人主页:个人主页 目录 递归树 1.递归构建二进制串 2.全排列的 DFS 解法 3.全排列的 BFS 解法 4.数的划分法 5.图书推荐 递归树 递归树是一种用于分析递归算法时间复杂度的工具。它可以将递归算法的执行过程可视化&#xf…...

week5-质数-最大公约数-快速幂-组合计数-博弈论

蓝桥 等差数列——欧几里得算法质数质数的判定——试除法分解质因数——试除法筛质数——埃氏筛法筛质数——线性筛法质数问题质数距离约数试除法求约数约数个数约数之和最大公约数-欧几里得算法(辗转相除法)扩展欧几里得算法裴蜀定理应用——线性同余方程消灭老鼠Hankson的趣…...

CloudCompare 二次开发(6)——插件中拖拽添加Qt窗口(区域生长算法为例)

目录 一、概述二、插件制作三、Cmake编译四、插件代码五、结果展示一、概述 手动拖拽的方式搭建Qt对话框界面的制作流程,以PCL中的点云区域生长算法为例进行制作。 二、插件制作 1、将....\plugins\example路径下的ExamplePlugin复制一份并修改名字为CCPointCloudProcess。 …...

2023值得推荐的高颜值Vue3.0 Web PC端UI框架,赶紧收藏学习!

Hello,我是前端胡说,本期给大家带来2023值得推荐的Vue3.0 UI组件库,希望大家喜欢! Vue3 正式发布已经有一段时间了,2022年2月也正式变成 Vue 项目的默认版本。在过去一年多的时间里,各大组件库、框架也紧跟…...

Springboot项目Aop、拦截器、过滤器横向对比

前言伟人曾经说过,没有调查就没有发言权(好像是伟人说的,不管谁说的,这句话是正确的),有些东西看着简单,张口就来,但很有可能是错的。我个人的经验是,aop、过滤器、拦截器的实现方式很简单&…...

为了之后找工作不被虐,每天刷3道《剑指offer》Day-1

本文已收录于专栏🌻《刷题笔记》文章目录前言💖 1、二维数组中的查找题目描述思路💖 2、替换空格题目描述思路💖 3、从尾到头打印链表题目描述思路一(反转函数)思路二(递归)思路二&a…...

Linux-磁盘管理介绍

Linux-磁盘管理介绍 计算硬盘介绍 硬盘是计算机主要存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成,碟片外覆盖有铁磁性材料,硬盘内部由磁道、柱面、扇区、磁头等部件组成; cylinder:柱面sector:扇区 磁道与…...

爬虫架构(一):爬虫中的去重处理

目录一、概要二、去重应用场景以及基本原理2.1 爬虫中什么业务需要使用去重2.2 去重实现的基本原理2.3 根据原始数据进行去重判断2.4 根据原始数据的特征值进行去重判断2.5 临时去重容器与持久化去重容器2.6 常用几种特殊的原始数据特征值计算三、基于信息摘要算法的去重3.1 信…...

算法刷题总结 (二) 回溯与深广搜算法

算法总结2 回溯与深广搜算法一、理解回溯算法1.1、回溯的概念1.2、回溯法的效率1.3、回溯法问题分类1.4、回溯法的做题步骤二、经典问题2.1、组合问题2.1.1、77. 组合 - 值不重复2.1.2、216.组合总和III - 值不重复且等于目标值2.1.3、17. 电话号码的字母组合 - 双层回溯2.1.4、…...

Linux 总结9个最危险的命令,一定要牢记在心!

rm -rf 命令 该命令可能导致不可恢复的系统崩坏。 rm -rf / #强制删除根目录下所有东西。 rm -rf * #强制删除当前目录的所有文件。 rm -rf . #强制删除当前文件夹及其子文件夹。 执行rm -rf 一定要想半天,搞明白自己在干什么. fork 炸弹 😦) { 😐:&am…...

spring cloud

spring cloud 分享 springboot:可以说是spring cloud的基础,是springMVC框架的简化,约定大于配置(在使用上、非功能上的简化) 可以说每个MPO Digital api就是springboot project(springboot项目) spring cloud&#xf…...

【9】核心易中期刊推荐——图像视觉与图形可视化

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…...

0108Bean销毁-Bean生命周期详解-spring

Bean使用阶段,调用getBean()得到bean之后,根据需要,自行使用。 1 销毁Bean的几种方式 调用org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#destroyBean调用org.springframework.beans.factory.config.Conf…...

微信小程序可以进行dom操作吗?

小程序不能使用各种浏览器暴露出来的 DOM API,进行 DOM 选中和操作 原因:在小程序中,渲染层和逻辑层是分开的,分别运行在不同的线程中,逻辑层运行在 JSCore 中,并没有一个完整浏览器对象,因而缺…...

昇腾AI深耕沽上:港口辐射力之后,天津再添基础创新辐射力

作者 | 曾响铃 文 | 响铃说 AI计算正在以新基建联动产业集群的方式,加速落地。 不久前,天津市人工智能计算中心正式揭牌,该中心整体规划300P算力,2022年底首批100P算力上线投入运营,并实现上线即满载。 这是昇腾AI…...

基于YOLOv5的疲劳驾驶检测系统(Python+清新界面+数据集)

摘要:基于YOLOv5的疲劳驾驶检测系统使用深度学习技术检测常见驾驶图片、视频和实时视频中的疲劳行为,识别其闭眼、打哈欠等结果并记录和保存,以防止交通事故发生。本文详细介绍疲劳驾驶检测系统实现原理的同时,给出Python的实现代…...

【Linux】-- 进程优先级和环境变量

目录 进程的优先级 基本概念 如何查看优先级 PRI与NI NI值的设置范围 NI值如何修改 修改方式一 : 通过top指令修改优先级 修改方式二 : 通过renice指令修改优先级 进程的四个重要概念 环境变量 基本概念 常见的环境变量 查看环境变量 三种…...

iOS 紧急通知

一般通知 关于通知的各种配置和开发,可以参考推送通知教程:入门 – Kodeco,具有详细步骤。 紧急通知表现 紧急通知不受免打扰模式和静音模式约束。当紧急通知到达时,会有短暂提示音量和抖动(约2s)。未锁…...

即时零售:不可逆的进化

“人们经常问我,这个世界还是平的吗?我经常跟他们说,亲爱的,它真的是平的,比以前更平了。”2021年3月,《世界是平的》作者托马斯弗里德曼在演讲时说。如他所说,尽管逆全球化趋势加剧&#xff0c…...

零售数据总结经验:找好关键分析指标和维度

各位数据的朋友,大家好,我是老周道数据,和你一起,用常人思维数据分析,通过数据讲故事。 每逢月末、季末、年终,运营部门的同事又要开始进行年终总结分析。那么,对零售连锁企业来说,…...

从零开始搭建游戏服务器 第一节 创建一个简单的服务器架构

目录引言技术选型正文创建基础架构IDEA创建项目添加Netty监听端口编写客户端进行测试总结引言 由于现在java web太卷了,所以各位同行可以考虑换一个赛道,做游戏还是很开心的。 本篇教程给新人用于学习游戏服务器的基本知识,给新人们一些学习…...

C++中那些你不知道的未定义行为

引子 开篇我们先看一个非常有趣的引子&#xff1a; // test.cpp int f(long *a, int *b) {*b 5;*a 1;return *b; }int main() {int x 10;int *p &x;auto q (long *)&x;auto ret f(q, p);std::cout << x << std::endl;std::cout << ret <&…...

java基础面试题(四)

Mysql索引的基本原理 索引是用来快速寻找特定的记录&#xff1b;把无序的数据变成有序的查询把创建索引的列数据进行排序对排序结果生成倒排表在倒排表的内容上拼接上地址链在查询时&#xff0c;先拿到倒排表内容&#xff0c;再取出地址链&#xff0c;最后拿到数据聚簇索引和非…...