Day11_Files and exceptions

"""
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()
发布了66 篇原创文章 · 获赞 45 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ACofKing/article/details/102507945