Python初入门(三)(Head First Python 第三章 文件与异常)
来源:互联网 发布:国产三维cad软件 编辑:程序博客网 时间:2024/05/16 06:40
Python如何从文件中读取数据
Python中的基本输入机制是基于行的:从文本文件向程序读入数据时,一次会到达一个数据行。
上图中,从标准库导入”os”
os.getcwd()的作用是查看当前工作目录
os.chdir()的作用是用于改变当前工作目录,其参数为Path 目标目录,可以是绝对目录或相对目录。
Python的open()BIF是用来与文件交互的,使用open()BIF处理文件中的数据时,会创建一个迭代器从文件向你的代码输入数据项,一次传入一行数据。
data=open(‘sketch.txt’) ——打开一个文件,并赋值给文件对象data
data.readline() ——使用readline()方法从文件获取一个数据行,这一点与java一样。
而end=’ ‘意思是末尾不换行,加空格。这个是python3的功能,python2会报错。
seek() 方法用于移动文件读取指针到指定位置。0表示文件开头。
close() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。 close() 方法允许调用多次。当 file 对象,被引用到操作另外一个文件时,Python 会自动关闭之前的 file 对象。 使用 close() 方法关闭文件是一个好的习惯。
异常处理
我们可以发现大部分数据行都是类似Man: Is this the right room for an argument?这样的的形式,这里我们可以对它们进行切割处理。
split()方法返回一个字符串列表,这回赋至一个目标标识符列表。这称为多重赋值。
在切割的过程中,我们发现有些数据行中不止一个:,这个问题我们可以利用each_line.split(‘:’,1)解决。
split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串。
我们还发现有些数据行不包含冒号,split()方法查找冒号时就会出现问题。我们可以增加额外逻辑,即事先对数据行进行判断。
find()会在一个字符串中查找一个指定子串。
data=open('sketch.txt')for each_line in data: if not each_find(':')==-1: (role,line_spoken)=each_line.split(':',1) print(role,end='') print(' said:',end='') print(line_spoken,end='')data.close()
然而这意味着更大的复杂性,所以我们更推荐另一种方法,异常处理
处理异常
try/except机制,这和java的try/catch机制十分相似,提供了异常处理进制,从而保护可能导致运行时错误的某些代码行。
data=open('sketch.txt')for each_line in data: try: (role,line_spoken)=each_line.split(':',1) print(role,end='') print(' said:',end='') print(line_spoken,end='') except: passdata.close()
如果你的异常处理代码设计为处理一种特定类型的错误,一定要在except代码行上制定错误类型,这样一来,就可以把一般化的异常处理代码转变为具有特定性。
try: data=open('sketch.txt') for each_line in data: try: (role,line_spoken)=each_line.split(':',1) print(role,end='') print(' said:',end='') print(line_spoken,end='') except ValueError: pass data.close()except IOError: print("The data file is missing!")
这一点和java的catch(IOException e)十分相似
- Python初入门(三)(Head First Python 第三章 文件与异常)
- Head First Python(文件与异常)
- head first python 第三章
- 《head first python》——文件与异常
- Python初入门(四)(Head First Python 第四章 数据保存到文件)
- Head First Python第三章知识点记录
- Head First Python 第三章 学习笔记
- Python初入门(一)(Head First Python 第一章 初识Python)
- Python初入门(六)(Head First Python 第六章 打包代码与数据 ,字典,类与继承)
- Head First Python---------(一)第一章(初识Python__人人都爱列表)、第二章(共享你的代码__函数模块)、第三章(文件与异常__处理错误)
- Python初入门(五)(Head First Python 第五章 处理数据)
- Python初入门(七)(Head First Python 第七章 集成在一起)
- Python初入门(八)(Head First Python 第八章 移动设备)
- head first python 第四章
- head first python第五章
- head first python 第六章
- Head First Python(第四章)
- Head First Python(第五章)
- 挑战程序竞赛系列(30):3.4矩阵的幂
- opencv总结3
- 箭头>
- java反射有一大作用:反编译
- springboot 自定义文件 读取
- Python初入门(三)(Head First Python 第三章 文件与异常)
- 用正则表达式实验计算器功能
- Property(prop)和Attribute(attr)的区别
- UVa297 例题6-11 四分树(Quadtrees)
- 深入理解Java虚拟机学习笔记-3.JVM性能监控及故障分析工具
- 一些对项目有用的链接
- Bootstrap基础1——栅格
- 消息队列的使用方法
- MetaQ源码阅读及与Spring结合使用