Chapter10_Notes

Python从入门到实践

第十章 文件和异常

1.从文件中读取数据

1.1 读取整个文件

open()函数读取文件内容并输出,其返回的是一个对象

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

# OUTPUT 
3.1415926535
  8979323846
  2643383279

使用关键字with时open()返回的文件对象只能在with代码块内使用

1.2 文件路径

相对文件路径,在Linux和OS X系统中可以使用:

with open('PyProject/pi_digits.txt') as file_object :

而Windows可以使用反斜杠而不是斜杠

with open('PyProject\pi_digits.txt') as file_object :

而绝对路径会更长,以盘符名称开头

1.3 逐行读取

要以每次一行的方式检查文件,可以对文件对象采用For循环:

filename = 'pi_digits.txt'

with open(filename) as file_object :
    for line in file_object:
        print(line.rstrip())

# OUTPUT
3.1415926535
  8979323846
  2643383279
1.4 在with代码块外进行操作(利用列表)

在使用with关键字时,open()返回的文件对象只在with代码块内可用,如果要在with代码块
外访问文件内容,可将with代码块内将文件的各行存储在一个列表当中(readline()函数),再在with代码块外部进行操作

filename = 'pi_digits.txt'

with open(filename) as file_object :
    lines = file_object.readlines()

for line in lines :
    print(line.rstrip())

# OUTPUT
3.1415926535
  8979323846
  2643383279

请注意区分readline()和readlines()函数,前者只将第一行数据存放在列表中,后者是将每一行存起来

1.5 使用文件的内容

我们利用操作列表的方式,可以在with代码块外部来对获取的文件内容进行操作

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)

# OUTPUT
3.141592653589793238462643383279

注意在读取文本文件时,所有文本均会被解读为字符串,如果读取的是数字并且希望将其作为数值使用,就必须使用函数int将其转换为整数,
或者使用float()将其转化为浮点数

1.6 对大型文件进行处理

在对超大型文件进行处理时,我们应该控制其打印的位数,我们可以使用打印区间进行打印

# 只打印到52位        
print(pi_string[:52] + "...")

2.文件写入

2.1 写入空文件

要将文本写入文件,我们在调用open() 时需要提供一个实参,告诉Python你要写入打开的文件

filename = 'pi_digits.txt'

with open(filename,'w') as file_object :
    file_object.write("hello world!")

3.异常

3.1 处理ZeroDivisionError异常

例如在让python执行’5/0‘这个计算时,其会报错为:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

指出一个错误对象ZeroDivisionError

3.2 利用try-except代码块来处理可能发生的异常

我们可以使用try-except代码块来为程序出现该错误时提出一个解决方案,而不是直接结束程序

try :
print(5/0)

except ZeroDivisionError:
    print("You cant divide by 0!")

else :
    print('you good!')

该处理方式即,尝试try代码块内的程序,如果出现ZeroDivisionError错误对象,即执行except代码块内的解决措施

当try代码块中的代码成功执行,则执行else代码块内的内容

4.存储数据

4.1 使用json.dump()和 json.load()

我们可以利用json模块来存储json格式的数据:

import json

numbers = [2,3,5,7,11,13]

filename = 'number.json'

with open(filename,'w') as f_obj :
    json.dump(numbers,f_obj)

类似的我们可以用json.load()模块来读取json格式的数据,并进行操作:

filename = 'number.json'

with open(filename) as f_obj :
    number_all = json.load(f_obj)
    print(number_all)

# OUTPUT
[2, 3, 5, 7, 11, 13]

小结

在本章中,我针对Python如何进行文件的读写进行了学习,针对如何处理文件读写异常也进行了深入的学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值