为了提高程序的运行效率,在程序运行的时候,需要从文件中读取数据,在运行结束之后需要将结果输出到文件中,这个过程中程序需要进行文件操作。在程序运行的过程中可能由于某些原因导致崩溃,当程序面临这些崩溃时如何操作,就是程序的异常处理。通过异常处理可以降低突发状况的危害,提高程序的可用性和稳定性。
文件
读取整个文件
with open(“test.txt”) as file_object:
contents = file_object.read()
print(contents)
1.open传递文件的名称,程序会在程序源文件所在的目录去查找test.txt文件
2.关键字with在不需要访问文件后将其关闭,你只管打开文件,并在需要时访问它,Python会在合适的时候自动将其关闭。
3.read()到达文件末尾时返回一个空字符串,而将这个空字符串显示出来就是一个空行。要删除末尾的空行,可在打印时使用rstrip()
路径
在open() 中即可传递文件的相对路径也可以传递文件的绝对路径,但有一点需要注意:
Linux和OS X路径中使用斜杠( / )
Window系统中路径使用反斜杠( \ )
另外由于反斜杠在Python中被视为转义标记,为在Windows中万无一失,应以原始字符串的方式指定路径,即在开头的单引号前加上r
逐行读取
filename = “test.txt”
with open(filename) as file_object:
for line in file_object:
print(line.rstrip())
每一行的结尾都有一个看不见的换行符,打印出来会出现空开,通过rstrip()消除空白。
创建一个包含文件各行内容的列表:
filename = “test.txt”
with open(filename) as file_object:
lines = file_object.readlines()
for line in lines:
print(line.rstrip())
写入文件
filename = “test.txt”
with open(filename, ‘w’) as file_object:
file_object.write(“I Love Python”)
open中传递两个参数第一个为文件名称,第二个为文件的打开模式:
w:写入模式
r:读取模式
a:附加模式
r+:读写模式
如果省略了模式参数,程序默认以只读模式打开文件。如果你要写入的文件不存在,函数open()将会自动创建它,然而以写入模式w模式打开文件时要格外小心,因为如果指定的文件已经存在,python会在返回文件对象前清空该文件。
写入多行
filename = “test.txt”
with open(filename, 'w') as file_object:
file_object.write(“I love python”)
file_object.write(“I love create new things”)
异常
使用try-except-else代码块处理异常
while True:
first_number = input(“\nFirst number:”)
if first_number == ‘q’:
break
second_number = input(“\n Second number:”)
try:
answer = int(first_number) / int(second_number)
except ZeroDivisionError:
print(“You can’t divide by zero”)
else:
print(answer)
处理FileNotFoundError异常
filename = “alice.txt”
try:
with open(filename) as f_obj:
contents = f_obj.read()
except FileNotFoundError:
#异常可使用pass语句表示异常时不做任何处理
msg = “Sorry the File” + filename + “does not exist”
print(msg)
else:
#计算文件中包含多少个单词
words = contents.split()
num_words = len(words)
print(“The file has” + str(num_words) + “words”)
读写json
模块json让开发者将简单的Python数据结构转存到文件中,并在程序再次运行时加载该文件中的数据。还可以使用json在程序之间分享数据。
写列表
import json
numbers = [2, 3, 5, 7, 9]
filename = “number.json”
with open(filename, ‘w’) as f_obj:
json.dump(numbers, f_obj)
读列表
import json
filename = “number.json”
with open(filename) as f_obj:
numbers = json.load(f_obj)
print(numbers)
注:Python中返回空用None