前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python基础学习-文件和异常

Python基础学习-文件和异常

作者头像
爱吃西瓜的番茄酱
发布2018-04-04 11:24:05
1.3K0
发布2018-04-04 11:24:05
举报
文章被收录于专栏:一个爱吃西瓜的程序员

学习处理文件和保存数据可让你的程序使用起来更容易,学习处理异常可帮助你应对文件不存在的情况,以及其他可能导致程序崩溃的问题。通过本章的学习可提高程序的适用性、可用性和稳定性。

一:从文件中读取文件:

1:读取整个文件:

① 首先创建一个文件pi_digits.txt

② 文件路径:

◆ 在Windows系统中,在文件路径中使用反斜杠(\) 而不是斜杠(/)

◆ 通过使用绝对路径,可读取系统任何位置的文件。

◆ 另外,由于反斜杠在Python中被视为转义字符,为确保万无一失,应以 原始字符串形式指定路径,即在开头的引号之前加上r。

③ 下面的程序打开并读取这个文件,再将其内容显示到屏幕上

◆ 关键字with在不需要访问文件的时候将文件关闭。

◆ 函数open()接受一个参数:要打开的文件的名称。

◆ 关键字as将文件“pi_digits.txt”重命名为 file_object,方便调用。

输出:

2:逐行读取:对文件对象使用for循环

输出:

要消除多余的空白行,可在print语句中使用rstrip():

输出:

3:创建一个包含文件各行内容的列表

输出:

4:使用文件的内容

输出:

二:写入文件

① 在如下示例中,调用open()函数时提供了两个实参:

一个实参是要打开的文件的名字(如果文件不存在,Python将自动创建它)

另一个是打开文件的模式,可指定只读模式("r"),写入模式("w"),附加模 式("a")等。

② Python只能将字符串写入文本文件,要将数值数据写入文本文件中,必须 先使用函数str()将其转换为字符串格式。

1:写入空文件

在当前工作目录下自动生成已写好的文件

打开文件programming.txt,将看到如下内容:

2:写入多行:函数write()不会在写入的文本末尾添加换行符,要让每个字符串独占一行,需要在write语句中包含换行符“\n”

输出:

3:附加到文件:以附加模式'a'打开文件,你写入到文件的行都将添加到文件末尾。如果文件不存在,Python将创建一个空文件。

输出:

三:异常

① 异常是使用try-except代码块处理的。

② 如果try代码块中的代码运行起来没有问题,Python将跳过except代码 块;

③ 如果try代码块中的代码导致了异常,Python将查找这样的except代码 块,并运行其中的代码

1:使用try-except代码块

输出:

2:else代码块:

通常将可能引发错误的代码放在try-except代码块中,可提高代码抵御错误能力依赖于try代码块成功执行的代码都应该放在else代码块中。

输出:

3:处理FileNotFoundError异常

输出:

4:分析文本:

◆ 分析Python之禅这首诗有多少个单词。

◆ 使用方法split(),它将根据一个字符串创建一个单词列表。

输出:

5:使用多个文件:

输出:

6:失败时一声不吭:

Python中有一个pass语句,可在代码块中使用它来让Python什么都不做。

输出:

四:存储数据

① 一种简单的方式是使用模块json来存储数据。

② 函数json.dump()接受两个对象:要存储的数据以及可用于存储数据的文 件对象。

1:使用json.dump()来存储数据:

输出:

2:使用json.load()来读取数据

输出:

3:保护和读取用户生成的数据

输出:

五:重构:

◆ 将代码划分为一系列完成具体工作的函数,这样的过程被称为重构。

◆ 重构让代码更清晰,更易于理解,更容易扩展。

# 重构上个问候用户的程序

import json

def get_stored_username():

"""如果存储了用户名,就获取它"""

filename = "username.json"

try:

with open(filename) as file_object:

username = json.load(file_object)

except FileNotFoundError:

return None

else:

return username

def get_new_username():

"""提示用户输入用户名"""

username = input("What is your name? ")

filename = "username.json"

with open(filename, "w") as file_object:

json.dump(username, file_object)

return username

def greet_user():

"""问候用户,并指出其名字"""

username = get_stored_username()

if username:

print("Welcome back, " + username + "!")

else:

username = get_new_username()

print("We'll remember you when you come back, " + username + "!")

greet_user()

输出:

每天学习一点点,每天进步一点点。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档