"""
Author:黄骏捷
Date:2019-10-10
操作模式 具体含义
'r' 读取 (默认)
'w' 写入(会先截断之前的内容)
'x' 写入,如果文件已经存在会产生异常
'a' 追加,将内容写入到已有文件的末尾
'b' 二进制模式
't' 文本模式(默认)
'+' 更新(既可以读又可以写)
读取文本文件
from datetime import time
from fileinput import filename
from math import sqrt
def main():
f = open('致橡树.txt','r',encoding='utf-8')
print(f.read())
f.close()
if __name__ == '__main':
main()
"""
from math import sqrt
"""
如果open函数指定的文件不存在或者无法打开,那么将引发异常状况导致程序崩溃。
为了让代码有一定的健壮性和容错性,使用py的异常机制进行处理
def main():
f = None
try:
f = open('致橡树.txt','r',encoding='utf-8')
print(f.read())
except FileNotFoundError:
print('无法打开指定的文件!')
except LookupError:
print('指定了未知的编码!')
except UnicodeDecodeError:
print('读取文件时解码错误!')
finally:
if f:
f.close()
if __name__ == '__main__':
main()
"""
"""
可以使用for-in循环逐行读取 或者 readliness方法 将文件按行读取到一个列表容器中
def main():
#一次性读取整个文件内容
with open('致橡树.txt','r',encoding='utf-8') as f:
print(f.read())
#通过for-in循环逐行读取
with open('致橡树.txt',mode='r') as f:
for line in f:
print(line,end='')
time.sleep(0.5)
print()
#读取文件按行读取到列表中
with open('致橡树.txt') as f:
lines = f.readlines()
print(lines)
if __name__ == '__main__':
main()
"""
"""
将文本信息写入文件
1-99之间的素数保存在a.txt中,100-999之间的素数保存在b.txt中,1000-9999之间的素数保存在c.txt中
"""
def is_prime(n):
"""判断素数的函数"""
assert n>0
for factor in range(2,int(sqrt(n))+1):
if n % factor == 0:
return False
return True if n != 1 else False
def main():
filenames = ('a.txt','b.txt','c.txt')
fs_list = []
try:
for filename in filenames:
fs_list.append(open(filename,'w',encoding='utf-8'))
for number in range(1,10000):
if is_prime(number):
if number<100:
fs_list[0].write(str(number) + '\n')
elif number<1000:
fs_list[1].write(str(number) + '\n')
else:
fs_list[2].write(str(number) + '\n')
except IOError as ex:
print(ex)
print('写文件时发生错误!')
finally:
for fs in fs_list:
fs.close()
print('操作完成!')
if __name__ == '__main__':
main()
Day11_Files and exceptions
最新推荐文章于 2024-09-25 09:59:34 发布