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具有响铃的作用。

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

print('/a')

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

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

Python的转义字符及其含义

💕Final~

以上就是这篇文章的全部内容了,希望本文《python文件操作》的内容对大家的学习或者工作具有一定的参考学习价值,bye~

相关文章
|
4月前
|
安全 Python
Python语言中常用的文件操作方法探讨
通过上述方法的结合使用,我们可以构筑出强大并且可靠的文件操作逻辑,切实解决日常编程中遇到的文件处理问题。
231 72
|
4月前
|
移动开发 安全 Linux
Python文件操作的"保险箱":with语句深度实战指南
本文深入解析Python中`with`语句的原理与高级应用,通过“保险箱”类比,形象展示资源管理机制。从上下文管理协议到实战场景,涵盖文件、数据库、网络等多种资源的高效安全处理方式,助你写出更优雅、可靠的代码。
145 1
|
5月前
|
缓存 数据库连接 数据库
Python文件操作的“保险箱”:with语句深度实战指南
本文深入探讨Python中with语句在文件操作中的应用及其优势。首先介绍其底层原理,基于上下文管理协议自动管理资源的获取与释放,避免手动关闭文件导致的资源泄漏问题。接着通过基础文件读写、异常处理进阶和复合资源管理等实战场景解析with语句的便捷性与安全性。同时,阐述如何自定义上下文管理器以满足特定需求,并分析其性能考量及优化策略。最后总结实战经验,强调优先使用内置管理器、明确异常处理以及保持代码可读性的重要性,助力开发者高效编写健壮的程序。
148 1
|
5月前
|
自然语言处理 安全 JavaScript
Python文件操作的“保险箱”:with语句深度实战指南
Python中的`with`语句是文件操作和资源管理的强大工具,如同一个智能保险箱,自动处理打开和关闭操作,避免手动管理可能引发的错误。它通过上下文管理协议(`__enter__`和`__exit__`方法)确保资源在使用后正确释放。无论是逐块读取大文件、同时读写文件,还是处理特殊编码文件,`with`语句都能简化代码并提高安全性。此外,自定义上下文管理器可扩展到数据库连接等场景,而常见错误如重复关闭文件或忽略异常也需注意。结合生成器表达式批量处理文件时,`with`语句仍能保持高效和安全。总之,`with`语句是资源管理的瑞士军刀,让复杂操作变得简单可靠。
146 1
|
5月前
|
数据采集 运维 BI
Python 文件操作进阶|使用 shutil 实现高效文件复制
在开发和运维中,处理大量文件是常见需求,如备份配置、归档日志或构建部署包。手动复制粘贴已无法满足高效需求!Python 的 `shutil` 模块提供了强大的文件操作功能,支持单文件复制、目录树迁移及自动化任务构建。本文详解 `shutil.copy()` 基础用法与进阶技巧,如批量复制、自动路径检测、时间戳命名备份等,助你实现高效自动化。结合实战案例(如自动备份系统),让你的代码更专业!学习后,欢迎交流心得,一起精进 Python 技能。关注我,获取更多编程技巧与源码分享!
|
监控 Java 数据处理
文件操作不再难!Python系统编程实战,带你轻松驾驭文件系统与I/O
【7月更文挑战第31天】在 Python 系统编程中, 文件操作与 I/O 管理至关重要。
167 2
|
存储 Python
Python文件操作(1)
【10月更文挑战第17天】
233 60
Python文件操作(1)
|
数据采集 存储 Python
Python文件操作2
【10月更文挑战第18天】
105 2
Python文件操作2
|
IDE 测试技术 开发工具
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
本文介绍了Python中的文件操作方法,包括使用open()打开文件、close()关闭文件、read()读取内容、readline()读取单行、readlines()读取多行、write()写入内容以及writelines()写入多行的方法。同时,探讨了文件操作模式和编码问题,并扩展了上下文管理器with...as的使用,以及对图片和音频文件操作的思考和练习。
148 1
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
|
存储 Python
Python文件操作
Python文件操作