快学Python:文件与异常

本文介绍了Python中处理文件的基本操作,包括读取、写入和异常处理。重点讲解了使用with语句管理文件,以及如何通过try-except来优雅地处理异常。此外,还探讨了使用json模块存储和读取数据的方法,并提供了代码重构的示例。
摘要由CSDN通过智能技术生成

学习如何处理文件,能让我们快速的分析大量数据,数据分析离不开文件的处理。同时,我们也将学习异常处理,没有不出错误的程序,但是能否优雅的处理这些错误,是考验我们程序健壮性的好还是不好。

本节大纲

1.从文件中读取数据

要读取文件,我们得先有一个文件,这里我们在当前目录下创建一个文件,随便你在那里创建,只要指定正确的路径就行。来看个例子。
1)创建文件pi_digits.txt,内容如下:

3.1415926535
  8979988787
  9384734544

2)创建file_reader.py,读取文件

with open('pi_digits.txt') as file_object:
    contents = file_object.read()
print(contents)

说明:关键字with在不再需要访问文件后将其自动关闭。所以在程序中,只调用了open函数,而没有调用close函数。其实也可以调用open函数,再调用close函数,但是这样做有很大的弊端,一是如果程序中途遭遇bug,导致close未能执行,文件将不会关闭。二是如果程序过早执行close导致,使用文件的时候文件却已经关闭。
结论:使用with吧,我们只管open并使用文件,让Python自动在合适的时候关闭。

1.1文件路径

读取文件,一定要指定文件及其路径,像上面的例子,只有文件名,那么Python会在当前路径下查找文件。
注意:显示文件路径时,Windows系统使用反斜杠(),而不是斜杠(/),但在代码中依然使用斜杠。
相对路径:相对于某一路径下的具体路径。

/test/file/pi_digits.txt

绝对路径:就是准确指出文件存在的具体完整路径。

/home/xxx/test/file/pi_digits.txt

就我们编程而言,要门将数据文件存储在当前程序文件所在目录,要么在当前程序文件下创建一个目录存储。
注意:在windows中,使用反斜杠,会引发错误,因为反斜杠用于对字符串中的字符进行转义,例如:"D:\path\test\file.txt",其中\t将会被解读为制表符。如果一定要使用反斜杠,可以对每个反斜杠再转义,如:"D:\\path\\test\\file.txt"

1.2逐行读取

读取文件,往往都是逐行读取:可能要在文件中查找特定的信息,或者以某种方式修改文件中的文本。

filename = 'pi_digit.txt';
with open(filename) as file_content:
    for line in lines:
        print(line)

将文件赋给变量filename,这是使用文件的一种常见做法。Python根据变量名就知道去哪里查找文件。还是使用with关键字来让Python负责妥善的打开的关闭文件。
上述例子可能会出现空白,我们处理空白的函数就可以发挥作用了。

print(line.rstrip())

1.3用列表存储文件内容

当使用with关键字的时候,文件的内容只能在with代码块内可用。如何才能在代码块外面访问文件内容呢?


with open(filename) as file_content:
	lines = file_content.readlines()
for line in lines:
    print(line.rstrip())

上面这个例子使用readlines()方法读取文件每行内容,然后存储到列表中,这样就可以在with代码块外使用文件内容了。利用for循环遍历列表,打印文件内容。

1.4 使用文件内容

只要利用列表拿到文件内容,那接下来想怎么处理就怎么处理。例如将上面的文件内容包含在一个字符串中,如何搞呢?

filename = 'pi_digit.txt';
with open(filename) as file_content:
	lines = file_content.readlines()

temp_str = ''
for line in lines:
	temp_str +=line.strip()

print(f"{temp_str[:10]}")

这里利用了temp_str来拼接列表的每行数据并进行去空格,然后还可以截取字符串进行输出。
注意:读取文本文件时,Python都将其解读为字符串,如果读取的是数,就必须使用函数int()或者float将其转换为整数或者浮点数。

2.写入文件

保存数据最简单的方式之一就是写入文件,这样通过文件的方式可以与他人共享数据。

2.1写入空文件

先来看个例子,如何写入空文件。

filename 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值