Python入门 -6-文件和异常
- 学习如何处理文件 让程序能够快速地分析大量的数据
- 学习错误处理 避免程序在面对意外情形时崩溃
- 学习异常:Python创建的特殊对象 用于管理程序运行时出现的错误
- 学习模块 json 让你可以保存用户数据 以免在程序停止运行后丢失
- 提升程序的适用性、可用性和稳定性
从文件中读取数据
将信息读取到内存中
with open('pi_digits.txt') as file_object: contents = file_object.read() print(contents)
函数 open() 接受一个参数:要打开的文件的名称
关键字with在不再需要访问文件后将其关闭 也可以调用open()和close()来打开和关闭文件 但是并非在任何情况下都能轻松确定关闭文件的恰当时机
使用方法read()来读取这个文件的全部内容
但程序结果会多出来一个空行 因为read()到达文件末尾时返回一个空字符串 而将这个空字符串显示出来时就是一个空行 要删除末尾的空行可以在print语句中使用rstrip()
当你将简单的文件名传递给函数open()时 Python将在当前执行的文件(即.py程序文件)所在的目录查找文件
提供文件路径
在linux 和 OSX中 with open('text_files/filename.txt') as file_object : 在windodws系统中 with open('text_files\felename.txt') as file_object :
- 相对文件路径 :相对于当前运行的程序所在目录
- 绝对文件路径 :
逐行读取由于反斜杠在Python中被视为转义标志 为在windows中万无一失 应以原始字符串的方式指定路径 即在开头的单引号前加上r
要以每次一行的方式检查文件 可以对文件对象使用for循环
filename = 'pi_digits.txt' with open(filename) as file_object: for line in file_object: print(line)
调用open()后 将一个表示文件及其内容的对象存储到了变量file_object 中
这样打印出来的空白行更多了 因为每行都有一个看不见的换行符 print语句也会加上一个换行符 消除多余的空白行 可在print语句中使用rstrip()
filename = 'pi_digits.txt' with open(filename) as file_object: lines = file_object.readlines() for line in lines: print(line.rstrip)
方法readlines()从文件中读取每一行 并将其存储在一个列表中
使用文件的内容filename = 'pi_digits.txt' with open(filename) as file_object: lines = file_object.readlines() pi_string = '' for line in lines: pi_string += line.strip() print(pi_string) print(len(pi_string))
注意 读取文本文件时 Python将其中的所有文本都解读为字符串 如果你读取的是数字 并要将其作为数值使用 就必须使用函数int()将其转换为整数 或者使用函数float()将其转换为浮点数
对于可处理的数据量 Python 没有任何限制 只要系统的内存足够多 想处理多少数据都可以
可使用方法replace()将字符串中的特定单词都替换为另一个单词 >>> message = " I really like dogs." >>> message.replace('dog', 'cat') 'I really like cats.'
写入文件
filename = 'programming.txt' with open(filename, 'w') as file_object: file_object.write("I love programming.")
调用open()时提供两个实参 第一个实参是要打开的文件的名称 第二个实参(‘w’) 告诉Python 要以写入模式打开这个文件
读取模式(默认):r
写入模式:w
附加模式:a
读取加写入:r+
如果写入的文件不存在 函数open()会自动创建它
以写入模式打开时 如果指定的文件已经存在 Python将在返回文件对象前清空该文件
注意 Python 只能将字符串写入文本文件 要将数值数据存储到文本文件中 必须先使用函数str()将其转换为字符串格式
异常
使用try-except 代码块处理
优点:避免用户看到traceback ; 让程序能够继续分析能够找到的其他文件
try: print(5/0) except ZeroDicisionError: print("You can't divide by zero!")
如果try代码块中的代码运行起来没有问题 Python将跳过expect代码块 如果try代码块中的代码导致了错误 Python将查找这样的except代码块 并运行其中的代码 即其中指定的错误与引发的错误相同
使用异常避免崩溃 else代码块依赖于try代码块成功执行的代码都应放在else代码块中
处理FileNotFoundError 异常找不到文件异常
分析文本Gutenberg(http://gutenberg.org/) 项目中提供了一系列不收版权限制的文学作品
>>>title = "Alice in Wonderland" >>>title.split() ['Alice' , 'in' , 'Wonderland' ]
方法split()以空格为分隔符将字符串分拆成多个部分 并将这些部分都存储到一个列表中
失败时一声不吭pass语句
决定报告哪些错误用户输入 存在指定的文件 有网络链接 就有可能出现异常 凭借经验可以判断该在程序的什么地方包含异常处理块 以及出现错误时该向用户提供多少相关信息
存储数据
模块json让你能够将简单的Python数据结构转储到文件中 并在程序再次运行时加载该文件中的数据
还可以使用json在Python程序之间分享数据 更重要的是 JSON数据格式并非Python专用的 这让你能够以JSON格式存储的数据与其他编程语言的人分享 这是一种轻便格式 很有用 也易于学习
json.dump() : 编写一个存储一组数字的尖端程序 使用json.dump() 来存储这组数据
接受两个实参 要存储的数据以及可用于存储数据的文件对象
json.load() : 编写一个将数字读取到内存中的程序
将代码划分为一系列完成具体工作的函数
每个函数都执行单一而清晰的任务
- Python初入门(三)(Head First Python 第三章 文件与异常)
- Python入门程序:文件操作和IO异常
- Python个人快速入门学习(十)文件和数据格式化
- Python轻松入门-40 异常
- Python入门篇之文件
- python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
- 【day 8】python编程:从入门到实践学习笔记-文件和异常(末附答案代码)
- Python之设计模式、异常处理、模块与包、文件操作及编码
- Python入门4:文件访问与函数式编程入门
- python-文件、异常处理、with else
- CSV文件分割与列异常处理的python脚本
- python入门(2)-目录文件列举和Beautiful Soup简单解析
- Python文件与异常--处理错误
- Python基础笔记_Day13_Python文件读写IO、异常、自定义异常
- Python学习入门基础教程(learning Python)--5.7 Python文件数据记录存储与处理
- 《Head_First_Python》 3文件与异常
- python入门(四):标准输出和文件读写
- Head First Python学习笔记2——文件与异常
- Python文件操作的两种方法 快速入门
- Python入门笔记(17):错误、异常