Python的文件读写


import time

def main():
    fs = open('hello.txt', 'r', encoding='utf-8')  # 把‘r’换成‘w’就是写文件
    # 表示打开当前路径下文件‘hello.txt’
    # content = fs.read()
    # print(content)

    # for line in fs:  # 一次读一行
    #    print(line, end = '')
    #    time.sleep(0.5)
    mylist = fs.readlines()
    print(mylist)
    fs.close()

    # 写文件
    # fs.write('弹木吉他抒情一些\n')
    # fs.write('可回忆骚动一整夜\n')
    # fs.write('寒冷却下不了雪\n')

    # 用with读取文件,如果在with下出现错误导致程序崩溃,就会退出,不会影响其他位置的程序
    # 输入文件路径也可以,.表示当前路径,..表示上一级路径
    with open('./abc/hello.txt', 'r', encoding='utf-8') as fs: 
        mylist = fs.readlines
        for line in mylist:
            print(line, end='')
            time.sleep(1)


if __name__ == '__main__':
    main()
​异常机制 - 处理程序在运行过程中出现的意外状况的手段
因为不是所有的问题都能够在写程序调试程序的时候就能发现


import time

def main():
    try:  # 把要读取的文件放到try里面保护起来,让文件即使读取出现错误也能够继续执行后面的代码
        with open('./abc/hello.txt', 'r', encoding='utf-8') as fs: 
            mylist = fs.readlines()
            for line in mylist:
                print(line, end='')
                time.sleep(1)
    except FileNotFoundError:  # 捕获文件异常
        print('指定的文件无法打开.')  
    # except IOError:
    #     pring('读写文件时出现错误.')

    # except FileNotFoundError as e:
    #    print(e)             打印出现错误的文件
    #    print('指定的文件无法打开')
    print('程序执行结束.')


if __name__ == '__main__':
    main()

​​

把1-100,101-1000,1001-10000的素数分别放入三个文件夹
from math import sqrt

def is_prime(n):
    assert n > 0  # 检查n是否是有效数,无效则程序报异常不执行
    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:  # 我们也可以把可能出状况(在执行时有风险)的代码放到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:  # 如果try中出现了状况就通过except来捕获错误(异常)进行对应的处理
        print('读写文件发生错误')
    except FileNotFoundError:  # except可以写多个分别用于处理不同的异常状况
        pass
    # except BaseException:  处理所有的异常状况
    #     pass

    # else:  如果没有出状况,那么可以把无风险的代码放到else中执行
    #     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')
    finally:
        # 释放文件资源,不管程序正常还是异常,最后这里的代码一定会执行,保证资源释放
        # 所以此处是最好的释放外部资源的位置,因为这里的代码总是会执行
        for fs in fs_list:
            fs.close
    print('操作完成!')


if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值