Python基础学习-文件和异常(四)
1 文件
1.1 从文件中读取数据
(1)读取整个文件
# xx表示文件名,yy表示文件的对象 with open('xx') as yy:
要以任何方式使用文件—哪怕仅仅是打印其内容,都得先打开文件,这样才能访问它。函数open()接受一个参数:要打开的文件的名称。Python在当前执行的文件所在的目录中查找指定的文件。
关键字with 在不再需要访问文件后将其关闭。在这个程序中,注意到我们调用了open(), 但没有调用close();你也可以调用open() 和close() 来打开和关闭文件,但这样做时,如果程序存在bug,导致close() 语句未执行,文件将不会关闭。这看似微不足道,但未妥善地关闭文件可能会导致数据丢失或受损。如果在程序中过早地调用close(),你会发现需要使用文件时它已关闭(无法访问), 这会导致更多的错误。并非在任何情况下都能轻松确定关闭文件的恰当时机,但通过使用前面所示的结构,可让Python去确定:你只管打开文件,并在需要时使用它,Python自会在合适的时候自动将其关闭。
创建一个文件.txt文件,内容为随意的三行数字,例如下图:
4355465 4464665 1645954
读取整个文件
with open(r'C:\Users\19248\Desktop\pro\numbers.txt') as file_object: context = file_object.read() print(context.rstrip())
输出:
4355465 4464665 1645954
细节:
(1)open()函数中r,表示不转义,使用真实字符。
(2)路径有相对路径和绝对路径,这里如果直接写一个文件名,那么这个文件就必须在这个工程里面,否则程序就会报错,找不到这个文件,对于绝对路径来说,随便放在哪个文件夹中,只要绝对路径正确就可以找到。对于路径中使用的是反斜杠(\ )而不是斜杠(/ )
(2)逐行读取
with open(r'C:\Users\19248\Desktop\pro\numbers.txt') as file_object: for line in file_object: print(line.rstrip())
这里在结尾加了一个rstrip()函数,这个函数删除(剥除)字符串末尾的空白
(3)创建一个包含文件各行内容的列表
方法readlines() 从文件中读取每一行,并将其存储在一个列表中
with open(r'C:\Users\19248\Desktop\pro\numbers.txt') as file_object: lines = file_object.readlines() for line in lines: print(line.rstrip())
输出:
4355465 4464665 1645954
1.2 写入文件
(1)写入文件
filename = r'C:\Users\19248\Desktop\pro\numbers.txt' with open(filename,'w') as file_object: file_object.write("I love programming.")
结果:
写入模式 | w |
---|---|
读取模式 | r |
附加模式 | a |
读写模式 | r+ |
注意:
在写入多行时,需要指定换行符
(3)附加到文件
给文件添加内容,而不是覆盖原有的内容,可以选择附加模式打开文件,在写入到文件的行都将添加到文件末尾。如果指定的文件不存在,Python将为你创建一个空文件。
filename = r'C:\Users\19248\Desktop\pro\numbers.txt' with open(filename,'w') as file_object: file_object.write("I love programming") file_object.write(",but I don't like study\n")
结果显示:
2 异常
2.1 使用异常避免崩溃
try-except-else代码块的工作原理如下:将可以引发异常的代码放在try语句中,如果try中的代码出现异常,就执行except中的代码,如果try中的代码没有出现异常,如果有else,就执行else中的语句。
print("Give me two numbers,and I'll divide them.") print("Enter 'q' to quit.") while True: first_number = input("\nFirst number:") if first_number == 'q': break; second_number = input("Second number:") try: answer = int(first_number) / int (second_number) except ZeroDivisionError: print("You can't divide by 0!") else: print(answer)
输出:
常见异常汇总:
AttributeError | 试图访问一个对象没有的属性 |
---|---|
IOError | 输入/输出异常;基本上是无法打开文件 |
SyntaxError | Python代码非法,代码不能编译 |
TypeError | 传入对象类型与要求的不符合 |
KeyError | 试图访问字典里不存在的键 |
NameError | 使用一个还未被赋予对象的变量 |
IndexError | 下标索引超出序列边界 |
FileNotFoundError | 找不到文件 |
2.2 pass语句
在函数中使用pass语句,将什么都不做,继续运行。
3 存储数据
3.1 使用json.dump() 和json.load()
json是一种数据交换格式
json.dump()是存储数据,接受两个实参:要存储的数据以及可用于存储数据的文件对象
如下:
import json numbers = [1,2,3,4] filename = 'numbers.json' with open(filename,'w') as f_obj: json.dump(numbers, f_obj)
输出:
json.load()读取写入的文件,参数是文件对象
下面是一个dump()和load()的结合使用:
尝试打开username.json文件。如果这个文件存在,就将其中的用户名读取到内存中,再执行else 代码块,即打印一条欢迎用户回来的消息。用户首次运行这个程序时,文件username.json不存在,将引发FileNotFoundError 异常,因此Python将执行except 代码块:提示用户输入其用户名,再使用json.dump() 存储该用户名, 并打印一句问候语。
- python基础学习笔记-文件与异常
- Python学习入门基础教程(learning Python)--5 Python文件处理
- ogre3D学习基础11 -- 日志文件的使用与异常处理
- Python学习(28--33) 文件、存储、异常
- Python学习入门基础教程(learning Python)--5.7 Python文件数据记录存储与处理
- 零基础入门学习Python(15):二进制存储 pickle 和异常处理
- python基础学习(6)—使用Python处理文件
- Python学习笔记 Day11 文件和异常
- open()文件对象的seek、tell方法详解 分类: python基础学习 open()文件读写 python Module 2013-09-05 09:40 450人阅读 评论(0) 收藏
- <<Python基础教程>>学习笔记 | 第11章 | 文件和素材
- Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识
- python基础学习之文件操作
- python基础学习笔记(三) 文件、time和正则表达式
- python基础学习15----异常处理
- python基础学习四——控制结构与异常
- python学习二(文件与异常)
- Python学习笔记三(文件与异常)
- .Net程序员之Python基础教程学习----函数和异常处理[Fifth Day]
- Python基础教程 第8章: 异常 学习笔记
- Python中的异常处理相关语句基础学习笔记