python文件操作(一看就懂)

这篇具有很好参考价值的文章主要介绍了python文件操作(一看就懂)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

历史遗留问题

现在我们接着上文讲,如果没有看过我上篇文章的萌新朋友们可以先去看看,不然一会儿容易读的你满脸问号。python字符编码

python文件操作(一看就懂)

现在我们来思考一个问题,我们在PyCharm里敲字符,这个字符应当先存到内存中去,而内存里都存的是unicode格式的二进制,如果我们现在就把他存到硬盘里,理论上来说就可以把unicode格式的二进制直接存到硬盘里就行了,如果是这样的话世界上就不会有乱码的问题了,但是内存的数据一旦断电就马上丢失了,而硬盘的数据是会永久保存的,这些硬盘里保存的有。

整个人类历史的长河中留下了数量非常之庞大的老文件,在这些文件里有很多都是用GBK编码、ASCII编码、Shift_JIS、Euc-kr等等的。对于这些老文件咱们肯定不能全删掉,如果能全部删掉我们也不会遇到乱码的问题了,因为所有文件都是unicode编码,所以我们做不到秦始皇那样,所以我们经常遇到乱码问题也是正常的,其原因就是残留了太多的各种的文件。

现在我们电脑内存里的编码方法都被替换成unicode了,所以我们现在在程序的过程中输入任何人类所用的字符都不会乱码,但是在电脑上的老文件也是需要正常显示的,所以unicode编码除了需要兼容玩过字符以外还需要与原来每个国家的字符编码有对应关系,把新的unicode的二进制数与老的编码表的二进制数一一对应起来,就相当于unicode需要充当一个第三方中介。

我们在文件中存下的数据在内存中存的是unicode的二进制数,然后当我们要保存到硬盘的时候我们要将文件保存成GBK格式,然后就会按照unicode对应上GBK的二进制编码进行保存。当我们要读取GBK格式的文件的时候也是照着以上步骤反过来,先看这个文件是以什么编码格式保存的,然后对应成unicode编码的二进制数,再根据unicode编码显示出来原来的字符。

如果我们在文件里输入韩文字符在内存里显示是没有问题的,当我们将它写入硬盘的时候我们给它保存成GBK格式的文件就会有问题,因为GBK根本就没有对应韩文字符,所以有的平台改写昵称是不允许使用除中文、指定符号、英文外的任何字符。如果我想将硬盘里存的GBK格式的文件转化成Euc-kr格式,由于GBK编码里面转成了英文和中文,Euc-kr编码里面又编定了英文和韩文,而unicode里面是包括所有国家的字符的,所以当我们把GBK格式的文件通过unicode转成Euc-kr的时候,英文也是可以正常显示的,但如果是中文的话就会乱码,这是因为Euc-kr里面没有中文的对应关系,所以说以前的老字符编码都是可以转成unicode的,但是它们不能通过unicode进行相互转换。

文件介绍

上面我们费了这么多的篇幅来讲字符编码,最终你只需要记住一个结论就行了:遇见乱码就加文件头,用python3加文件头直接加,用python2加文件头前面先加一个小写u。

到底什么是文件呢?我们常说计算机有三层体系结构:最下层是硬件,硬件之上就是操作系统,最上层就是用户和应用程序。

用户和应用程序如果想操作硬件就必须通过操作系统,比如用户或者应用程序想要操作硬盘这个硬件就得操作操作系统,而操作系统提供了一种虚拟的概念,那就是文件,或者叫做操作系统提供的操作硬盘功能。用户或者应用程序想要把数据存到硬盘里去就需要对操作系统的文件发起系统调用,操作系统会把用户或者应用程序对文件的调用功能转成具体的硬盘操作,比如磁盘怎么转、磁头臂怎么摆,然后再把数据写到硬盘我们平时修改的文件都是借助文本编译器来实现修改文件的。

我们平时修改文件,都是借助文本编译工具来实现修改文件的,比如Visual Studio Code、Visual Studio、PyCharm、Word等等。当然,图片和视频也可以修改,图片对应的工具就是PS,图片数据就是16进制的,PS内所有的工具、画笔都是对颜色的修改,只不过是经过封装的而已。

打开文件

如果用代码来操作文件python就为我们提供了一个名为 open() 的功能,这个open功能就是用来打开操作系统文件的,然后去用操作系统的文件去对应具体的硬盘空间,所以以后我们用open功能打开一个文件,然后对文件进行操作,其实open就是通过操作这个文件然后转换成具体的硬盘操作。

在讲open之前open功能有两大类模式我们需要掌握。

第一大类的模式就是控制文件读写操作的模式,在这类模式当中r模式就是控制只读模式,w控制只写模式,a是只追加写模式。a和a都是只写模式,其区别就在于w模式下如果一个文件里原本有数据,w模式就会将其清空后再写;a模式则会在原有的数据后追加写,不清空原有数据。还有一个模式就是+模式,这个+不能够单独使用,他必须和r、w、a配合使用,也就是r+、w+、a+,+号会在他们原有的基础上给你增加一个你原来没有的功能,r+就是在只读的基础上增加了写的功能;w+功能就是原来只能写,有了加号以后就可以读了;a+就是除了原来的追加写以外也可以读了。虽然上述的三种模式都是可读可写,但是在他们原有的基础上增加的功能,所以受限于它原有的功能,受限在哪里我们后面再具体说。

第二类模式就是控制控制文件读写内容的模式,这个模式控制的是你读文件的时候读的是什么格式的数据、写文件又是写的什么格式的数据,如果读写的是文本格式的数据就是t模式,t模式是默认的模式,如果我们不指定这个模式他就会默认为t模式。

t模式是以字符串为单位的,说到这里我们来思考一下:我们为什么要学文件处理?学习文件处理的目的其实就是把原本存放于内存的数据保存到硬盘里面去。如果内存里现在存的是一堆unicode数据存到硬盘,就是要把unicode数据encode一下才能存,不管是编码成utf-8,还是编码成gbk都是要编码一下,总之不能把unicode存到硬盘,因为unicode只存于内存,所以才要encode一下。

刚刚我们说的t模式的读写都是以字符串为单位的,而python3的字符串类型在内存里都是unicode格式的。我们要把字符串存到硬盘就应该把字符串编码一下才能存到硬盘,所以以后我们遇到字符串类型直接把它想象成unicode就行了。

转定义字符

用python操作文件的第一步就是打开文件,第二步就是具体操作文件(包括读写文件),最后一步就是关闭文件。

打开文件的方法就是在open()功能中传一个参数再给它指定我们要打开的文件的路径,示例代码如下:

file = open(r'C:\trees\app.txt')

当我们将以上代码放到PyCharm中后大家就会发现字符串中的\t\a和其他的字符的颜色有些不同,那是因为在python的字符串中这个斜杠是具有转义的作用的,例如\n就是换行符、\t是制表符、\a具有响铃的作用。

python文件操作(一看就懂)

比如说我们运行以下代码电脑就会出现响铃:

print('/a')

除了以上的转义符之外还有许多别的转义符,我们下面列出了两个表格为大家介绍:

Python格式化字符串的替代符以及含义

python文件操作(一看就懂)

Python的转义字符及其含义

python文件操作(一看就懂)

💕Final~

以上就是这篇文章的全部内容了,希望本文《python文件操作》的内容对大家的学习或者工作具有一定的参考学习价值,bye~文章来源地址https://www.toymoban.com/news/detail-435296.html

到了这里,关于python文件操作(一看就懂)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】插入排序详细图解(一看就懂)

      💯 博客内容:【数据结构】插入排序详细图解(一看就懂) 😀 作  者:陈大大陈 🦉所属专栏:数据结构笔记 🚀 个人简介:一个正在努力学技术的准前端,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家:这里是CSDN,我总结知识和写笔记的地方,喜欢的话请三连,

    2024年02月07日
    浏览(39)
  • C# for循环案例1 (一看就懂)

     效果:  用f10可以清楚的看到程序执行的每一步,  #region for循环 /*   语法:     for(表达式1;表达式2;表达式3) {    循环体; } for(表达式1;表达式2;表达式3)   表达式1 定义循环的次数,可以理解为循环变量。表达式2 执行的条件。 表达式3,改变循环的条件,使循环条件不

    2023年04月11日
    浏览(37)
  • C# 一看就懂的装箱拆箱案例

    在C#中,装箱(Boxing)和拆箱(Unboxing)是值类型与引用类型之间相互转换的过程。 当一个值类型(如整数、结构体或枚举等)需要转换为对象(System.Object)或接口类型时,系统会自动创建一个新的对象实例,并将该值类型变量的值复制到新创建的对象中。这个过程就称为装

    2024年02月02日
    浏览(33)
  • AI —— 一看就懂的代码助手Copilot获取教程

            随着chatgpt的发布,人工智能领域近期站上了风口浪尖。GitHub Copilot由github与 OpenAI 合作创建,是世界上第一个使用 OpenAI 的 Codex 模型(GPT-3 的后代)制作的大规模生成式 AI 开发工具。GitHub Copilot 作为 AI 结对程序员开启了软件开发的新时代,通过自动完成注释和代

    2024年02月02日
    浏览(47)
  • 微信小程序实现倒计时功能,一看就懂,直接用

    结构完整,直接用就可以

    2024年02月01日
    浏览(51)
  • java三层架构,有图有案例有代码,一看就懂!!!

    三层架构 三层结构解释: 视图层:主要是用于与用户进行交互,比如接收用户输入的内容将返回结果向用户展示等。 业务逻辑层:实现每个功能的特定的逻辑方法。 数据访问层:主要是与数据库进行连接,然后对数据库进行增删改查工作。 结构一: 包的层级结构: 三层结

    2024年02月03日
    浏览(36)
  • 如何在android运行lua脚本(最简单的讲解,一看就懂)

    1.打开 android studio 2.引入luaj-jse-3.0.1.jar包(百度自行下载) 3.新建assets文件夹 4.在assets文件夹下新建一个 main.lua文件,内容如下 5.MainActivity.java 内容如下 5.运行程序

    2024年02月11日
    浏览(26)
  • 一看就懂的保姆级教程:open vn设置 (亲测通过)

    OpenVPN是一款优秀用于创建虚拟私人网络的软件,但是由于其涉及了服务器证书、TLS密钥、防火墙等一堆衍生概念,因此设置显得比较复杂。本文化繁为简,仅以 “能连通” 这个最低要求,完整地展示了一遍OpenVPN的安装调试过程。万事开头难,在实现了连通的基础上再来探索

    2024年02月02日
    浏览(37)
  • 【Unity】图解 碰撞检测函数,一看就懂!(OnCollisionEnter、OnCollisionStay、OnCollisionExit、OnTriggerEnter......)

    现有: Lesson16脚本的代码: 运行: 何为触发器:勾选了碰撞器的Is Trigger参数,这个游戏物体就会变成一个触发器 现有: Lesson16脚本的代码: 运行: 1.只要脚本挂载的对象 能和别的物体产生碰撞或触发,那么上面那六个函数就能够被相应 (有物理效果的相应的是\\\"物理碰撞

    2023年04月09日
    浏览(32)
  • 正则表达式 运算符优先级与匹配规则 | 一看就懂!!!(四)

    目录 一、正则表达式 - 运算符优先级 (一)正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。 (二)相同优先级的从左到右进行运算,不同优先级的运算先高后低。 (三)下表从最高到最低说明了各种正则表达式运算符的优先级顺序:  二、正

    2024年02月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包