首页 > 编程语言 >深度之眼(十四)——Python:文件、异常和模块

深度之眼(十四)——Python:文件、异常和模块

时间:2022-12-12 16:03:11浏览次数:53  
标签:文件 encoding Python text 模块 txt open 之眼


文章目录

  • ​​零、导读​​
  • ​​8.1 文件读写​​
  • ​​8.1.1 文件的打开​​
  • ​​8.1.2 文件的读取​​
  • ​​8.1.3 文件的写入​​
  • ​​8.1.4 既读又写​​
  • ​​8.1.5 数据的存储与读取​​
  • ​​8.2 程序异常处理​​
  • ​​8.2.1 常见异常的产生​​
  • ​​8.2.2 异常的处理​​
  • ​​8.3 模块​​
  • ​​8.3.1广义模块分类​​
  • ​​8.3.2 模块的导入​​
  • ​​8.3.3 模块的查找路径​​
  • ​​总结​​

关于C语言的文件IO,可以看我之前写的文章,有个专栏专门讲了
​系统编程 文件IO​​

零、导读

深度之眼(十四)——Python:文件、异常和模块_开发语言

8.1 文件读写

8.1.1 文件的打开

  • 文件的打开通用格式
with open("文件路径","打开模式", encoding="操作文件的字符编码")as f:
"对文件进行相应的读写操作"
使用with块的好处,执行完毕后,自动对文件进程close操作
  • 例1:一个简单的文件读取
with open("C:/Users/DELL/Desktop/1.txt","r",encoding = "utf-8")as f: #第一步,打开文件
text = f.read() #第二步,读取文件
print(text)

上面是最终版

这里遇到两个问题
问题一:python报错:‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape
解决:在文件夹中复制地址时,文件夹中的地址是用 ​​​\​​​ 来分隔不同文件夹的,而Python识别地址时只能识别用 ​​/​​​ 分隔的地址。我一开始是:​​C:\Users\DELL\Desktop\1.txt​​​所以就报错了
问题二,打印出来的文字时乱码,忽然想起来我的txt是​​​UTF-8​​​模式,不是​​gbk​​​ 解决:修改encoding=​​UTF-8​

深度之眼(十四)——Python:文件、异常和模块_类名_02


1. 文件路径

  • 完整路径,如上例
  • 程序与文件在同一文件夹,可简化成文件名
with open("1.txt","r",encoding = "utf-8")as f: #第一步,打开文件
text = f.read() #第二步,读取文件
print(text)

2. 打开模式

深度之眼(十四)——Python:文件、异常和模块_Desktop_03

  • ** 打开模式缺省,默认为只读模式**

3. 字符编码

  • 万国码 utf-8
    包含全世界所有国家需要用到的字符
  • 中文编码 gbk
    专门解决中文编码问题
  • windoews系统下,如果缺省,则默认为gbk(所在区域编码)
  • 为清楚起见,除了处理二进制文件,建议不要缺省encoding

8.1.2 文件的读取

1.读取整个内容——f.read()

深度之眼(十四)——Python:文件、异常和模块_数据_04


2、逐行进行读取——f.readline()

with open("C:/Users/DELL/Desktop/1.txt","r",encoding = "utf-8")as f:
while True:
text = f.readline()
if not text:
break
else:
print(text,end="") #保留原文本的换行,使print()的换行不起作用

深度之眼(十四)——Python:文件、异常和模块_开发语言_05


文档中的空行,实际上是有字符的,而文件末尾是没有的

3. 读入所有行,以每行为元素形成一个列表——f.readlines()

with open("C:/Users/DELL/Desktop/1.txt","r",encoding = "utf-8")as f:
text = f.readlines()
print(text)

深度之眼(十四)——Python:文件、异常和模块_python_06

with open("C:/Users/DELL/Desktop/1.txt","r",encoding = "utf-8")as f:
for text in f.readlines():
print(text)

深度之眼(十四)——Python:文件、异常和模块_类名_07


4、文本文件读取小结

文件比较大时,read(和readlines()占用内存过大, 不建议使用

readline用起来又不太方便

with open("C:/Users/DELL/Desktop/1.txt","r",encoding = "utf-8")as f:
for text in f:
print(text)

深度之眼(十四)——Python:文件、异常和模块_类名_08


5.二进制文件

with open("C:/Users/DELL/Desktop/1.txt","rb")as f:
print(len(f.readlines()))

​4​

8.1.3 文件的写入

1、向文件写入一个字符串或字节流(二进制)—— f.write()

with open("C:/Users/DELL/Desktop/1.txt","w",encoding = "utf-8")as f:
f.write("姑娘你别哭泣\n")
f.write("我俩还在一起\n")
f.write("今天的欢乐\n")
f.write("将是明天创痛的回忆\n")

深度之眼(十四)——Python:文件、异常和模块_类名_09

如果文件存在,新写入内容会覆盖掉原内容,一定要注意! ! !

2.追加模式—— “a”

with open("C:/Users/DELL/Desktop/1.txt","a",encoding = "utf-8")as f:
f.write("\n")
f.write("春天刮着风\n")
f.write("秋天下着雨\n")
f.write("春风秋雨多少海誓山盟随风远去\n")

深度之眼(十四)——Python:文件、异常和模块_开发语言_10


3.将一个元素为字符串的列表整体写入文件——f.writelines()

ls = ['\n','沙琪玛的美味\n', '健身精神\n', '祝福与乐观\n', '祝你有个美好的一天']
with open("C:/Users/DELL/Desktop/1.txt","a",encoding = "utf-8")as f:
f.writelines(ls)

深度之眼(十四)——Python:文件、异常和模块_类名_11

8.1.4 既读又写

  1. “r+”
  2. “w+”
  3. “a+”

8.1.5 数据的存储与读取

通用的数据格式,可以在不同语言中加载和存储
本节简单了解两种数据存储结构csv​json​

  1. csv格式
    由逗号将数据分开的字符序列,可以由excel打开

    • 读取
    • 深度之眼(十四)——Python:文件、异常和模块_Desktop_12

    • 写入
    • 深度之眼(十四)——Python:文件、异常和模块_python_13

  2. 2. json格式
    * 写入——dump()
  3. 深度之眼(十四)——Python:文件、异常和模块_python_14

    * 读取——load()
    ![在这里插入图片描述](/i/ll/?i=ac6612c41c0f4ab4be0585e858eb3b89.png)
8.2 程序异常处理

8.2.1 常见异常的产生

深度之眼(十四)——Python:文件、异常和模块_python_15


深度之眼(十四)——Python:文件、异常和模块_类名_16


深度之眼(十四)——Python:文件、异常和模块_数据_17


深度之眼(十四)——Python:文件、异常和模块_python_18

8.2.2 异常的处理

深度之眼(十四)——Python:文件、异常和模块_类名_19


深度之眼(十四)——Python:文件、异常和模块_python_20


深度之眼(十四)——Python:文件、异常和模块_Desktop_21


深度之眼(十四)——Python:文件、异常和模块_类名_22


深度之眼(十四)——Python:文件、异常和模块_Desktop_23


深度之眼(十四)——Python:文件、异常和模块_python_24

8.3 模块

已经被封装好
无需自己再“造轮子”
声明导入后,拿来即用

8.3.1广义模块分类

1. Python 内置
时间库time\随机库randoml 容器数据类型collection\迭代器函数itertools
2.第三方库
数据分析numpy. pandas\ 数据可视化matplotib机器学习scikitlearnl深度学习Tensorflow
3、自定义文件

* 单独py文件
* 包一多个py文件

8.3.2 模块的导入

1.导入整个模块一 import 模块名

  • 调用方式:模块名.函数名或类名
  • 深度之眼(十四)——Python:文件、异常和模块_类名_25

  • 2、从模块中导入类或函数一- from 模块import类名或函数名
  • 调用方式:函数名或类名

深度之眼(十四)——Python:文件、异常和模块_类名_26


3、导入模块中所有的类和函数一-from 模块import *

●调用方式:函数名或类名

深度之眼(十四)——Python:文件、异常和模块_数据_27

8.3.3 模块的查找路径

模块搜索查找顺序:

1.内存中已经加载的模块

深度之眼(十四)——Python:文件、异常和模块_Desktop_28

  1. 内置模块
  2. 深度之眼(十四)——Python:文件、异常和模块_类名_29

  3. sys.path路径中包含的模块
  4. 深度之眼(十四)——Python:文件、异常和模块_Desktop_30


  5. 深度之眼(十四)——Python:文件、异常和模块_数据_31

总结

深度之眼(十四)——Python:文件、异常和模块_类名_32


深度之眼(十四)——Python:文件、异常和模块_python_33


深度之眼(十四)——Python:文件、异常和模块_Desktop_34




标签:文件,encoding,Python,text,模块,txt,open,之眼
From: https://blog.51cto.com/u_15909950/5930343

相关文章

  • Python的输出print语句是否会显著降低运行速度?
    先说结论,会,并且运行时间是一般赋值语句的200倍左右,这个知乎回答是我昨天写的,内容是相同的。首先既然是探讨输出是否影响程序运行时间,那肯定就要控制是否输出作为唯一变化......
  • 【PyQt6】Python中QDateTime的常用方法总结
    前置QtDesigner里拖了一个QDateTimeEdit,设置时间格式为“yyyy/MM/ddHH:mm:ss”常用函数dt1=object1.dateTime()#object为QDateTimeEdit对象dt2=object2.dateTi......
  • 选择光模块时,应该从哪些方面去选择?
    光模块在通信网络中也占据着不小的位置,在选择光模块时,我们应该从哪些方面去选择呢?1、传输距离:不一样的光模块支持的传输距离是不一样的,一般而言,多模光模块的传输距离会比单......
  • 数据分析必备工具书:Python官方中文文档
    本文推荐数据分析的必备工具书:Python官方文档,注意,这是一份中文文档!(作者孙强)一、前言今天推荐一下Python官方文档,注意,这是一份中文文档!主题:可以说非常详细了,Python3.7全新变......
  • 光模块常见故障与使用注意事项详解
     光模块未正确安装常见故障有哪些?怎样才是正确的安装方法以及光模块注意事项有哪些?接下来我们就跟随飞畅科技的小编一起来详细了解下吧! 光模块常见故障1、光模块端口被污......
  • 怎样辨别光模块的真假?
     光模块(opticalmodule)由光电子器件、功能电路和光接口等组成,光电子器件包括发射和接收两部分。简单的说,光模块的作用就是光电转换,发送端把电信号转换成光信号,通过光纤传......
  • 常见数据结构与算法的Python实现
    有人问我数据结构与算法怎么学?怎么用Python实现常见的数据结构算法?我找到一个github标星66.6k+的仓库,把各种常见算法用Python实现了,而且还有动图演示,非常值得推荐。(黄海广)仓......
  • python3中requests库重定向获取URL
     importrequestsdefrequest_jd():url='http://jd.com/'#allow_redirects=False这里设置不允许跳转response=requests.get(url=url,allow_redirects=False......
  • TheFuck—Python写的超实用命令纠正工具
    哈喽兄弟们,我们在学习Python的过程中,有这么一款工具,可以轻松纠正我们写错的命令,简直太好用了~TheFuck是一款功能强大的、Python编写的应用程序,可用于纠正控制台命令......
  • Python的入门学习Day 16~18——form”夜曲编程“
    Day16Day17time:2021.8.14.​今天七夕。激动,喜悦。平静呼吸,嘻嘻~也许我也是天空。去看课程了,嗯。今天重点学习了循环的对立面——”跳出循环“的操作。一如......