Python:文件和异常

2020-07-25  本文已影响0人  Dragon_boy

从文件中读取数据

读取整个文件

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

函数open()接受一个文件名作为参数,将文件内容存储在as后面指定的对象中。使用with关键字可以不需要手动关闭文件,也可以手动使用close()关闭文件,但建议使用with,Python可以自动在合适的时候关闭文件。

有了文件对象后,使用read()方法读取文件的全部内容,并返回内容的字符串。注意,read()方法到达文件末尾会返回一个空字符串,即多出一个空行。要删除末尾的空行,可以使用rstrip()。

逐行读取

可以直接遍历文件对象,这样就是逐行读取:

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

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

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

for line in lines:
    print(line)

readlines()可以从文件中读取每一行,并存储在列表中。

写入文件

写入空文件

调用open()方法时添加一个参数即可:

filename = 'programming.txt'

with open(filename, 'w') as file_object:
    file_object.write('I love programming.')

第二个实参'w'表示以写入模式打开文件,还可指定模式:读取('r'),附加('a'),读取和写入('r+'),Python默认为只读r。

如果写入的文件不存在,则open()会创建一个文件,如果已经存在一个文件的话,则会清空该文件,所以使用'w'时要小心。

write()方法将一个字符串写入一个文件。

写入多行

write()方法不会在文件末尾添加换行符,所以需要手动添加:

filename = 'programming.txt'

with open(filename, 'w') as file_object:
    file_object.write('I love programming.\n')
    file_object.write('I love programming.\n')

附加到文件

如果想要在文件中附加内容,则使用附加模式打开文件,写入的内容都将添加到文件末尾:

filename = 'programming.txt'

with open(filename, 'a') as file_object:
    file_object.write('I love programming.\n')
    file_object.write('I love programming.\n')

异常

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

处理ZeroDivisionError异常

try:
    print(5/0)
except: ZeroDivisionError:
    print('You can't divide by zero!')

这样的话,会得到错误信息,但程序还会继续运行。

else代码块

try:
    print(5/0)
except: ZeroDivisionError:
    print('You can't divide by zero!')
else:
    print('something')

如果try中代码成功,则执行else中的代码,反之抛出异常,然后执行一些代码。

处理FileNotFoundError异常

这是文件找不到的异常:

filename = 'alice.txt'

try:
    with open(filename) as f_object:
        contents = f_object.read()
except FileNotFoundError:
    msg = "sorry, the file does not exist."
    print(msg)

分析文本

title = 'Alice in Wonderland'
title.split()  # ['Alice', 'in', 'Wonderland']

split()方法可以以空格为分隔符将字符串分拆为多个部分,并将结果存储在一个列表中。

存储数据

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

JSON格式时一种数据存储格式,很多语言都可以使用。

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

import json

numbers = [2,3,5,7,11,12]
filename = 'numbers.json'
with open(filename, 'w') as f_obj:
    json.dump(numbers, f_obj)

json.load可以将列表读取到内存中:

import json

filename = 'numbers.json'
with open(filename) as f_obj:
    numbers = json.load(f_obj)
上一篇 下一篇

猜你喜欢

热点阅读