Python小记:6.文件的读取、写入

2023-09-17 16:10

读取:

  • open用于开文件
  • as设置别名
  • with用于指定访问文件的范围,出了with作用域自动关闭文件 (此时想获取读取的数据,可以在with里用一个容器接受文件中的内容)
with open('pai.txt') as file_object:"""读取文件内容,内部有中文字符就不行:'gbk' codec can't decode byte 0x82 in position 51: illegal multibyte sequence"""content=file_object.read()print(content)

读取并去掉空格:

filename='pai.txt'
with open(filename) as file_object:"""读取文件内容,内部有中文字符就不行:'gbk' codec can't decode byte 0x82 in position 51: illegal multibyte sequence"""lines=file_object.readlines()str_content=''
for line in lines:str_content += line.strip()print(str_content.rstrip())
print(len(str_content))

写入:

“”"
调用open() 时提供了两个实参。
第一个实参也是要打开的文件的名称;
第二个实参(‘w’ )告诉Python,我们要以写入模式 写入模式 打开这个文件。

打开文件时,可指定读取模式(‘r’ )、写入模式 (‘w’ )、附加(‘a’ )或让你能够读取和写入文件的模式(‘r+’ )。

如果你省略了模式实参,Python将以默认的只读模式打开文件。
“”"

filename = 'pai.txt' 
with open(filename, 'w') as file_object: file_object.write("I love programming.\n")#写入多行时,主要要加换行符file_object.write("I love programming.")#注意  Python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数str() 将其转换为字符串格式。 
"""
如果你要写入的文件不存在,函数open() 将自动创建它。然而,以写入('w' )模式打开文件时千万要小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件。
"""

不覆盖继续写入

"""
如果你要给文件添加内容,而不是覆盖原有的内容,可以附加模式打开文件。你以附加模式打开文件时,Python不会在返回文件对象前清空文件,而你写入到文件的行都将添加到文件末尾。如果指定的文件不存在,Python将为你创建一个空文件。 
"""with open(filename, 'a') as file_object: file_object.write("I also love finding meaning in large datasets.\n")file_object.write("I love creating apps that can run in a browser.\n")

实际项目增加文件操作的健壮性:

加入异常处理机制:try-except-else
在无法打开时,提示错误:

filename = 'pai.txt'  
try:      with ope	n(filename) as f_obj:          contents = f_obj.read()  
except FileNotFoundError:      msg = "Sorry, the file " + filename + " does not exist."      print(msg)  
else:   print(content)

这样的提示大家可能回想,正常运行错误了就会报错,这个报错还有什么意义呢?

  • 首先编译器内部的报错可能会泄漏一些信息,不安全
  • 其次,内部报错,整个程序运行就终止了,如果我想读取多个文件,有一个文件打不开,后续的就都打不开了。

使用多个文件:

1.首先来一个函数包含我们需要的功能:

def print_file_content(filename):try:      with ope	n(filename) as f_obj:          contents = f_obj.read()  except FileNotFoundError:      msg = "Sorry, the file " + filename + " does not exist."      print(msg)  else:   print(content)

2.下面就可以统一操作多个文件了:

#这样的操作,即使siddhartha.txt打不开,也不影响后面两个文件的操作filenames = ['alice.txt', 'siddhartha.txt', 'moby_dick.txt', 'little_women.txt'] 
for filename in filenames:    print_file_content(filename)
相关文章

TableLayout 和 GridLa

2023-10-03 17:38
TableLayout 和 GridLayout 的区别1。表格布局继承LinearLayout无需显式声明包含多少行和列通过添加TableRow/其他组件控制表格的行数和列数单元格设置格式有3种:S...

TableLayout表格布局UI

2023-10-03 17:38
创建新的android项目时,UI的默认布局是LinearLayout(线性布局)。如果我们想要并排显示TextView,我们可以使用TableLayout(表格布局)。android.widget....

如何使用PHP防止表单重复提交

2023-10-03 17:25
这次我就给大家介绍一下如何使用PHP防止表单重复提交。使用PHP防止表单重复提交有哪些注意事项?下面是一个实际案例,我们来看看。代码很简单相信你很聪明,分享一个小demo给你,你可以学习一下:PHP ...

三星SDI将投资19.7亿美元在美国与S

2023-10-03 16:30
【】9月27日消息,据外媒报道,继印第安纳州科科莫合资电池工厂建设后年初,三星旗下电池制造商三星SDI和Stratis于7月宣布将在美国建设第二家电池工厂。...

2nm半导体代工竞争已打响:台积电、三星

2023-10-03 16:30
据9月28日消息,虽然2nm先进半导体芯片尚未投产,但半导体代工厂的设备争夺战已经打响。为了保证2nm制程技术的顺利部署,台积电、三星、Rapidus都开始了上游设备领域的竞争。部署状态:台积电台积电...

Oracle一次替换多列数据(oracl

2023-10-03 16:10
Oracle:一次替换多列数据在Oracle数据库中,当需要修改多列数据时,我们不希望手动逐列更新,这样会非常费时费力。相反,Oracle提供了一次替换多列数据的方法,可以大大提高效率。这是使用“UP...

火影视频桌面卸载教程是什么?如何关闭火影

2023-10-03 15:26
火影视频桌面卸载教程是什么?点击桌面右下角菜单栏;点击所有程序,选择Firefly Video桌面文件夹;点击卸载并确认删除。如何关闭火影视频壁纸?打开火影视频壁纸的“功能”页面,点击“视频壁纸”图标...

如何显示keil5左侧工程目录(keil

2023-10-03 15:02
本文目录列表:1、keil创建工程后,为什么左侧没有出现工程文件?2、keil uvsion3的工程窗口(左边窗口不见了)3.如何恢复keil5删除的左侧4、keil左侧工程窗口在哪里打开?5.如何在...

如何把vs2019的英文改成中文_

2023-10-03 15:02
Visual Studio2019语言包切换 1.打开安装程序 2.选择语言包 3.一系列操作Visual Studio2019语言包切换我忘记设置语言包了。默认是中文的。我每次找东西的时候总觉得看起...

未找到命令/使用自动化测试通过“捆绑安装

2023-10-03 12:17
||我对 RoR 完全陌生。我正在关注迈克尔·哈特尔的书。我无法进行自动化测试。请说明问题所在并提出解决方案。当我从 Rails 项目目录中的命令行运行“自动测试”时,我得到以下信息:-bash:自动...

如何在win10中查看电脑配置参数

2023-10-03 11:22
当我们使用win10系统的电脑时,有时我们可能需要查看电脑的详细配置。至于win10中如何查看电脑配置参数,我们可以使用代码在命令提示符窗口中查看。详情请看下文~...

QT 一个基于饼图的抽奖系统

2023-10-03 11:12
我见过一些网站或应用程序有类似积分抽奖的活动。这几天做了一个抽奖软件,感觉效果还不错!希望能给大家带来启发渲染绘制饼图代码void彩票标签::paintPieChart(QPainter *画家){...

在mac和centos上安装Elasti

2023-10-03 10:48
-->Elasticsearch安装(系统需要提前安装java环境)mac安装brew install elasticsearchcentos安装下载ElasticSearch安装包,https://...

esp328位并行口_esp32 io口

2023-10-03 09:42
本文内容列表:1. esp32和esp82.如何并行化esp323、esp32c05的区别4. esp32和esp8266的区别esp32 和 esp8esp32。 esp32 和 esp8esp32...

vs2022找不到安装文件locatio

2023-10-03 09:42
本文目录列表:1.在其他电脑上找不到vs2022dll。2、Visualstudio2022安装报错无法定位输入点集。3.vs2022无法安装扩展4. Visual Studio Profession...

年度爆文