当前位置: 首页 > 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…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

数据库分批入库

今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...