Python文件操作注意事项

news2024/12/29 9:40:48

今天继续给大家介绍Python相关知识,本文主要内容是Python文件操作注意事项。

一、文件操作流程注意事项

在文章Python文件操作详解(一)中,我们讲解过,文件操作的流程是打开文件——操作文件——关闭文件。如果我们在操作完文件后,没有关闭文件,那么该文件就会被该程序所占用(关于文件占用可参考本文第三章)。但是如果Python程序被关闭,那么Python也会自动关闭我们打开的文件。
为了解决这一问题,我们可以使用with关键字,with关键字可以帮助我们自动的关闭文件,并且当文件操作失败(有时文件因为被别的程序占用、权限问题等,因此会打开失败)或者使用结束后,自动关闭文件。with关键字使用示例如下:

with open("test.txt","r+") as f:
	【处理文件操作】

在上述示例中,我们将open()函数放在with关键字后面,最后的f是执行open()函数后,打开的文件句柄。注意上述语句最后面的冒号,以及后续处理文件操作中需要的缩进。
注意,我们尽量不要把打开文件的操作放到try except异常处理语句中,因为try except语句当文件处理出现异常后,不会自动关闭文件。

二、文件读取时的编码问题

对于文本方式打开的文件,会存在一个固定的字符编码。例如,我们在Windows操作系统的记事本,就可以在另存为操作时指定文件的编码,如下所示:
在这里插入图片描述
我们使用文本方式打开不同编码类型的文件,就必须指定文件的编码类型,常见的编码类型有gbk和utf-8,打开这两种编码类型的文件需要在open函数中指定encoding参数,如下所示:

f=open("test.txt","r+",encoding="utf-8")
f=open("test.txt","r+",encoding="gbk")

如果打开的文件存在中文,那么选择错误的编码方式,不会在open()函数中报错,但是在对文件操作时有可能出现错误,如下所示:
在这里插入图片描述
之所以出现上述错误,就是由于指定的GBK编码不能对utf-8的部分编码进行解码导致的。
然而,由于gbk和utf-8在英文和数字上的支持,因此我们使用utf-8和gbk编码时打开不同的文件也会操作正常,如下所示:
在这里插入图片描述

三、文件操作与操作系统

实际上,尽管我们使用Python,可以很轻松的操作文件,但是其中有很多文件操作的细节,都是Python自动的帮助我们完成了,因为这涉及到很多文件系统、操作系统的知识。事实上,Python对文件的操作,在操作系统看来,是对文件系统的操作。Python对于文件的操作很大程度上要依靠操作系统来执行。
例如,我们在Python中,使用open()函数打开一个文件后,在操作系统上类似一个“占用”,直至我们使用close()函数解除对该文件的占用(或者采用其他方式解除)。在对文件的占用期间,其他程序不能对该文件进行删除。
此外,Python中文件句柄的概念,也是继承了操作系统的相关文件句柄操作。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/84379.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计用于汽车和车身SPC58NH92C3RMI0X\SPC560B50L1B4E0X微控制器

SPC560B50x系列 32 位微控制器是集成汽车应用控制器的最新成就。它属于一个不断扩大的以汽车为中心的产品家族,旨在解决下一波汽车内部的车身电子应用。该汽车控制器系列的先进且经济高效的主机处理器核心符合 Power Architecture 嵌入式类别,仅实现 VLE…

Qt扫盲-QRadioButton理论总结

QRadioButton理论总结1. 简介2. 自动排外3. 信号槽4. 外观&快捷键1. 简介 QRadioButton是一个选项按钮,可以打开(选中)或关闭(未选中)。单选按钮通常为用户提供”众多”选项之一。在一组单选按钮中,一…

黑客隔空盗密码,你的账户安全吗?

一、NFC卡防互动,怎样才能更安全? 想知道黑客如何破解你的设备,盗取你的信息吗?这一黑科技设备将向你展示黑客是如何隔空盗取你银行卡的账号密码的。 模拟黑客使用一张RFID读卡器,近距离靠近你的银行卡时,…

java毕设_第172期ssm高校毕业生就业满意度调查统计系统_计算机毕业设计

java毕设_第172期ssm高校毕业生就业满意度调查统计系统_计算机毕业设计 【源码请到下载专栏下载】 今天分享的项目是《ssm高校毕业生就业满意度调查统计系统》 该项目分为2个角色,管理员和用户。 用户可以浏览前台,包含功能有:进行问卷提交、 就业咨询、试题列表进行…

Mentor-dft 学习笔记 day40-Saving Timing Patterns(1)

Timeplate Examples 例如,移位周期40ns,占空比为50%,timeplate所示: timeplate tp_shift force_pi 0; measure_po 5; pulse_clock 10 20; period 40; end;拉伸的timeplate可用于将时钟脉冲延迟40ns,同时保持相同的20…

计算机研究生就业方向之运营商(移动,联通,电信)

我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么,如果你只是转码,那么你不一定要考研,至少以下几个职位研究生是没有啥优势的: 1,软件测试工程师(培训一下就行) 2,前…

[附源码]Nodejs计算机毕业设计基于Java网络游戏后台管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

HackTheBox Precious CVE-2022-25765利用,YAML反序列化攻击提权

靶机网址: https://app.hackthebox.com/machines/Precious枚举 使用nmap枚举靶机 nmap -sC -sV 10.10.11.189发现域名,我们本地DNS解析一下 echo "10.10.11.189 precious.htb" >> /etc/hosts然后访问网站 CVE-2022-25765利用 他的功…

网络流量分析帮助企业提升OA应用性能(一)

需求简介 某外高桥公司的OA系统是其重要的业务系统,OA系统负责人表示,部分用户反馈,访问OA系统时比较慢。需要通过分析系统看一下实际情况。 信息部已对企业领导定义了独立的组,本次要主动分析OA使用体验快慢。如果OA系统存在访…

mybatis入门02:Mybatis核心文件配置

目录 2.1 MyBatis核心配置文件层级关系 2.2MyBatis常用配置解析 1.environments标签 2.mapper标签 3.properties标签 4.typeAlisases标签 2.3 Mybatis相应的API 1.SqlSessionFactory工厂构造器SqlSessionFactoryBuilder 2.SqlSession工厂对象SqlSessionFactory 3.SqlSe…

实时监控网络流量,精准辨别网络性能瓶颈

网络流量反映网络运作状态,是辨别网络运行是否正常的关键指标,通过对网络流量进行监测不仅能反映交换机、路由器等设备的工作状态,更能体现整个网络资源的运行性能。同时,用户在网络中的行为可以通过其承载的流量动态来展现&#…

使用个从版gitee时向远程库push修改后内容时报remote: error: File: xxx 129.03 MB, exceeds 100.00 MB

1、报错时截图如下(我以下所有命令都是在Git Bash中执行的): 这是先前git push报的提示,明显说LFS(即large file system,此处大文件应该就是指过超过100M的单一文件)仅仅针对企业版gitee用户才…

.Net 7 CLR和ILC编译函数过程

楔子 由于甲方的需求,随着研究深入,发现CLR编译函数与ILC编译是两种不同的截然方式,除了JIT部分编译一样,其它部分貌似完全不一。 本篇来梳理这些东西。QQ:676817308。wx公众号:江湖评谈 示例: 作为例子…

OH----基于RK3568的AB分区功能,bsp部分

1、背景: OH master 主线 ,RK3568平台添加AB分区功能,uboot部分完成对ab分区标志位的读取解析,并加载和进入对应的分区,如: kernel_a 或者 kernel_b 2、环境: rk3568 Uboot代码下载&#xff…

股票L2接口和L1接口有什么差距?

股票L2数据的主要特点是能看到资金流向和十档买卖盘,比L1数据更加清晰和全面。 但是就现在的股票市场而言,也不能全部听信L2数据。 很多数据也是庄家做出来的,就是为了给散户看,所以全面分析基本面和技术面才是最重要的。 而且…

[附源码]计算机毕业设计个人博客系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

【CSS】多行文字保持垂直居中,移动端布局,grid布局,居中总结

❤️ Author: 老九 ☕️ 个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏: 文章目录多行文字垂直居中方法一方法2方法3方法四移动端布局viewport标签典型的手机网页设计grid布局grid…

基于C语言+SQL Server2008实现(控制台)图书管理系统【100010024】

第1章 概述 1.1项目背景 随着科技的发展,尤其是计算机技术的迅猛发展,图书馆管理的问题从以往的人工管理,到现在的电脑化,系统化,是对图书馆管理方法的质的飞跃,这些技术不仅让图书馆管理变得更加方便、快…

【Java EE初阶】创建线程的五种方式

文章目录1. 继承Tread,重写run()2. 实现Runnable接口,重写run()3. 使用匿名内部类,继承Thread4. 使用匿名内部类,实现Runnable5. 使用lambda表达式1. 继承Tread,重写run() 示例:pandas 是基于NumPy 的一种工具,该工具…

Kafka系列之:使用Kafka Manager实现leader分区平衡和broker节点上分区平衡

Kafka系列之:使用Kafka Manager实现leader分区平衡和broker节点上分区平衡 一、需求背景二、leader分区不平衡三、实现leader分区不平衡四、分区在节点不平衡五、实现分区在节点平衡一、需求背景 kafka节点扩容,分区不平衡现在需要leader分区平均分配在每个节点上同时分区副本…