从文件中读取数据
读取整个文件
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)
网友评论