在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。
open(文件路径,访问模式)
实例如下:
说明:
文件的路径分为相对路径和绝对路径。
获取路径(directory 目录 文件夹):
print(path)
print(path)
print(path)
print(path
print(result)
# ('C:\User\running\Desktop\python基础\day13\代码\day13文件\code\aa\file01','.py')
print(size) # 返回单位是字节个数 ,获取文件大小
访问模式
说明
以只读方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,则报错。这是默认模式。
打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+
打开一个文件用于读写。文件指针将会放在文件的开头
w+
打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb
以二进制格式打开一个文件只用于只读。文件指针将会放在文件的开头
wb
以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb+
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+
以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+
以二进制格式打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
close()
示例如下:
使用write()可以完成向文件写入数据
注意:如果文件不存在,那么创建;如果存在那么就先清空,然后写入数据
使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
运行结果:
readline只用来读取一行数据。
运行结果:
readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行为列表的一个元素。
tell()方法用来显示当前指针的位置
seek(offset,whence)方法用来重新设定指针的位置。
csv文件:Comma-Separated Values,中文叫逗号分隔值或者字符分割值,其文件以纯文本的形式存储表格数据。可以把他理解为一个表格,只不过这个表格是以纯文本的形式显示的,单元格与单元格之间,默认使用逗号进行分隔;每行数据之间,使用换行进行分隔。
name,age,score zhangsan,18,98 lisi,20,99 wangwu,17,90 jerry,19,95
python中的csv模块,提供了相应的函数,可以让我们很方便的读写csv文件。
除了将数据写入到一个文件以外,我们还可以使用代码,将数据暂时写入到内存里,可以理解为数据缓冲区。Python中提供了StringIO和BytesIO这两个类将字符串数据和二进制数据写入到内存里。
StringIO可以将字符串写入到内存中,像操作文件一样操作字符串
如果想要以二进制的形式写入数据,可以使用BytesIO类,它的用法和StringIO相似,只不过在调用write方法写入时,需要传入二进制数据。
应用:制作文件的备份
输入文件的名字,然后程序自动完成对文件进行备份
把内存中的数据转换为字节序列,保存到文件,这就是序列化,反之,从文件的字节序列恢复到内存中,就是反序列化。
Python中提供了JSON和pickle两个模块用来实现数据的序列化和反序列化。
JSON(JavaScriptObjectNotation, JS对象简谱)是一种轻量级的数据交换格式,它基于 ECMAScript 的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。JSON的本质是字符串!
JSON提供了dump和dumps方法,将一个对象进行序列化。
dumps方法的作用是把对象转换成为字符串,它本身不具备将数据写入到文件的功能。
dump方法可以将对象转换成为字符串的同时,指定一个文件对象,把转换后的字符串写入到这个文件里。
注意:如果是一个空对象,调用dumps方法转换成为一个JSON对象,得到的结果是null(JS里的空对象)
使用loads和load方法,可以将一个JSON字符串反序列化成为一个Python对象。
loads方法需要一个字符串参数,用来将一个字符串加载成为Python对象。
load方法可以传入一个文件对象,用来将一个文件对象里的数据加载成为Python对象。
和json模块类似,pickle模块也有dump和dumps方法可以对数据进行序列化,同时也有load和loads方法进行反序列化。区别在于,json模块是将对象转换成为字符串,而pickle模块是将对象转换成为二进制。
pickle模块里方法的使用和json里方法的使用大致相同,需要注意的是,pickle里是将对象转换成为二进制,所以,如果想要把内容写入到文件里,这个文件必须要以二进制的形式打开
思考: json和pickle两个模块都可以将对象进行序列化和反序列化,那它们有哪些区别,在使用场景上又该如何选择?
json模块:
Python
JSON
dict
object
list,tuple
array
str
string
int,float
number
True
true
False
false
None
null
程序在运行过程中,由于编码不规范,或者其它原因,导致我们的程序无法继续运行,此时,程序就会出现异常。如果不处理异常,程序会由于异常中断掉。
在读取一个文件时,如果这个文件不存在,则会报出FileNotFoundError错误。
我们可以使用异常处理机制来解决程序运行过程中可能出现的问题。
try...except语句可以对代码运行过程中可能出现的异常进行处理。 语法结构:
try: 可能会出现异常的代码块 except 异常的类型: 出现异常以后的处理语句
示例:
else在if中,它的作用是当条件不满足时执行的实行;同样在try...except...中也是如此,即如果没有捕获到异常,那么就执行else中的事情
运行结果如下:
try...finally...语句用来表示这样的情况:
在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用finally。 比如文件关闭,释放锁,把数据库连接返还给连接池等。
说明:我们可以观察到KeyboardInterrupt异常被触发,程序退出。但是在程序退出之前,finally从句仍然被执行,把文件关闭。
如何正确关闭一个文件
普通版
这样写有一个潜在的问题,如果在调用write的过程中,出现了异常进而导致后续代码无法继续执行,close方法无法被正常调用,因此资源就会一直被该程序占用
进阶版
改良后对可能发生异常的代码进行try捕获,使用try/finally语句,该语句表示如果在try代码块中程序出现了异常,后续代码就不再执行,而之间跳转到except代码块。而无论如何,finally块中的代码最终都会被执行。因此,只要把close放在finally代码中,文件就一定会关闭。
高级版
with语句实质上是一个上下文管理器,with语句后的对象都会有__enter__()和__exit__()方法。在进入到上下文时,会自动调用__enter__()方法,程序正常执行完成,或者出现异常中断的时候,都会调用__exit__()方法。
可以用raise语句来引发一个异常。
异常/错误对象必须有一个名字,且它们应该是Error或Exception类的子类。
运行结果:
下面将详细介绍如何使用 pathlib 模块来处理文件路径。我们将从创建 Path 对象、绝对路径与相对路径、访问文件路径分量,以及检查文件路径是否存在等几个方面进行讲解。1. 创建 Path 对象要使用 pathlib,首先需要导入模块并创建一个 Path 对象。from pathlib import Path# 创建表示当前工作目录的Path对象current_directory
# 如何通过Python启动指定路径的软件在某些情况下,我们可能需要使用Python来启动计算机上的特定软件。这可以通过使用`subprocess`模块来实现。`subprocess`模块允许我们创建新的进程并与其进行交互。下面是一个解决问题的方案,该问题是使用Python启动指定路径的软件。## 确定软件的路径和启动命令首先,我们需要确定要启动的软件的路径和启动命令。这可以通过在命
# Python打开指定路径文件的步骤在Python中,要实现打开指定路径的文件,可以按照以下步骤进行操作:| 步骤 | 代码 | 说明 || --- | --- | --- || 步骤一 | `import os` | 导入操作系统模块,用于处理文件路径 || 步骤二 | `file_path = "指定文件路径"` | 设置要打开的文件路径,可以是绝对路径或相对路径 || 步骤
# Python打开指定路径的文件## 流程图```mermaidsequenceDiagram participant 开发者 participant 小白 开发者->>小白: 解决问题 小白->>开发者: 提问 activate 开发者 开发者-->>小白: 提供解决方案 deactivate 开发者 小白->>开发
## Python实现打开指定路径软件### 1. 整体流程下面是实现打开指定路径软件的整体流程:| 步骤 | 描述 || --- | --- || 1 | 获取用户输入的软件路径 || 2 | 检查输入的路径是否存在 || 3 | 打开指定路径的软件 |### 2. 每一步的实现#### 第一步:获取用户输入的软件路径使用`input()`函数获取用户输入的软件路
# Python 打开指定路径在Python中,我们经常需要操作文件和目录,其中一个常见的任务就是打开指定路径。在本文中,我们将介绍几种不同的方法来打开指定路径,并提供相应的代码示例。## 使用open函数打开文件在Python中,可以使用内置的open函数来打开文件。open函数接受一个文件路径作为参数,并返回一个文件对象,通过该对象我们可以对文件进行读写操作。下面是一个简单的示
# 如何在 Python 中打开指定路径的 Excel 文件在这篇文章中,我将教你如何在 Python 中打开一个指定路径的 Excel 文件。这个过程非常简单,适合初学者。我们将分阶段进行操作,以下是每个步骤的概述和完整的代码示例。## 流程概述| 步骤 | 描述 ||------|------|| 1 | 安装所需的库 || 2 | 导入库 || 3 |
# Python不指定路径打开文件在Python中,我们经常需要读取或写入文件。通常情况下,我们需要指定文件的路径来读取或写入文件。然而,在某些情况下,我们可能希望不指定路径,而是直接打开文件。本文将介绍如何在Python中不指定路径打开文件,并提供相应的代码示例。## 为什么不指定路径打开文件?为什么我们会考虑不指定路径直接打开文件呢?这是因为有时候我们并不关心文件的具体位置,而只想
# Python打开指定路径下的文件在Python中,可以使用`open()`函数来打开指定路径下的文件。打开文件后,可以读取文件内容、写入文件内容或者进行其他文件操作。本文将介绍如何使用Python打开指定路径下的文件,并提供一些示例代码。## 1. 打开文件要打开文件,可以使用Python内置的`open()`函数。`open()`函数接受一个文件路径作为参数,并返回一个文件对象,
## 如何使用Python打开指定路径下的文件### 概述在Python中,我们可以使用内置的`open()`函数来打开文件。为了实现打开指定路径下的文件,我们需要按照以下步骤进行操作。### 流程概览下表展示了整个过程的步骤和相应的说明。| 步骤 | 说明 || --- | ---- || 1. 使用`input()`函数获取用户输入的文件路径 | 获取用户输入的文件路径,该
## 如何指定Sublime Text打开的python路径在使用Sublime Text编写Python代码时,有时候我们需要指定Sublime Text打开Python文件时使用的Python路径。这在我们需要使用特定版本的Python或者虚拟环境时非常有用。下面将介绍如何在Sublime Text中指定Python路径的方法。### 步骤一:打开Sublime Text软件首先,
文件 什么是文件?图片.png可能上图是你脑海中迅速闪过的可能文件是存储在外部介质的数据集合,通常可以长久保存(前提是这个介质不易损坏)通俗点说,文件就是存放数据的地方绝对路径与相对路径通常,我们使用电脑的时候,例如编写了一段代码,我们要把这段代码保存,方便下次使用你可能会把这段代码保存在硬盘某个位置【坏笑图片.png如果在Python中,我们要打开这个文件操作,该怎么操作呢?就像大象装冰箱需要三
**python 的文件操作** - [ ] 使用python来读写文件是非常简单的操作,我们使用open()来打开一个文件,获取到文件的语柄,然后通过文件语柄就可以进行各种各样的操作了。 - [ ] 打开文件的方式: > r,w,a ; > r+,
使用Excel,存在一些基础重复性的操作工作,这些在日常工作可能会浪费很多的时间,通过python,可实现一些基础的操作,帮助日常办公高效操作Excel,主要梳理如下:1.基础包:Pathlib:操作工作簿的路径基础包 Xlwings:操作Excel工作簿的基础包 Pandas:读写相关操作2.涉及到的操作查看路径/移动路径新建工作簿打开已有工作簿重命名工作簿转化工作簿格式拆分工作簿合并工作簿加密
--是一种集成和设计的理念,像一个蓝图,将市政府(MPU)警察局(MCU)研究所(DSP)机场(调制解调器)放在同一片土地(芯片)上,组成了一个功能完善的芯片。DSP(Digital Signal Processing):数字信号处理器 ---是为了高强度数学运算而设计的一种专用芯片。(3)CPU(Center Processing Unit):中央处理单元 ---是一种强大通用型处理器。MPU(Mirco Processing Unit):微处理器 ---通用型,偏向处理。
0. 什么时候要自定义序列化器?你不想使用 Flink 推断的默认序列化器(或 Kryo/Avro),而是完全掌控字节格式与兼容策略。状态对象很大或访问频繁,通用序列化性能不足,需要定制的紧凑编码(例如稀疏结构、位压缩、字典编码)。你需要长期演进状态 Schema(增删字段、参数配置变化),并且希望 ...
今天给大家带来一款非常实用的发票PDF文件识别软件——InvCom,它不仅能高效识别最新全电票和旧版电子发票,还能合并PDF文档,功能强大,操作便捷,是发票管理的得力助手。InvCom 发票PDF文件识别工具InvCom是一款绿色版软件,下载完成后,点击蓝色图标即可直接打开使用,无需复杂安装过程,方便快捷。软件的菜单栏功能丰富多样,每个功能都十分
最近学习java编程语言学到了类这一章节,接触到了抽象类和接口。个人对于抽象类和接口有了自己的一些理解,想要再这里和大家分享,由于新人第一次写博客,同时对于问题的理解可能也存在一定的不足和狭隘,希望各位大佬多多指点,也希望和各位一起学习进步抽象类: 个人对于抽象类的理解为:类是对客观事物抽象化的结果,而抽象类是对类再进行一定的抽象化得到的。换言之这是从哲学角度上来讲,哲学上会对事物进行高度的概