PYTHON機器學習自學/自修 整理[00027] ~ PYTHON – 100天从新手到大师(11.文件和异常.md)

PYTHON機器學習自學/自修 整理[00027] ~ PYTHON – 100天从新手到大师(11.文件和异常.md)

PYTHON機器學習自學/自修 整理[00027] ~ PYTHON – 100天从新手到大师(11.文件和异常.md)


‘r’ 讀取(默認)
‘w’ 寫入(會先截斷之前的內容)
‘x’ 寫入,如果文件已經存在會產生異常
‘a’ 追加,將內容寫入到已有文件的末尾
‘b’ 二進制模式
‘t’ 文本模式(默認)
‘+’ 更新(既可以讀又可以寫)




單純開檔+讀檔(全部)最後顯示檔案內容

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()


單純開檔+讀檔(一行一行)最後顯示檔案內容

import time


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()


依序打開三個檔案,並且寫入對應資訊

from math import sqrt


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:#1~99質數
                    fs_list[0].write(str(number) + '\n')
                elif number < 1000:#100~999質數
                    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()	


讀寫二進制檔(簡易圖檔複製)

def main():
    try:
        with open('guido.jpg', 'rb') as fs1:
            data = fs1.read()
            print(type(data))  # <class 'bytes'>
        with open('吉多.jpg', 'wb') as fs2:
            fs2.write(data)
    except FileNotFoundError as e:
        print('指定的文件无法打开.')
    except IOError as e:
        print('读写文件时出现错误.')
    print('程序执行结束.')


if __name__ == '__main__':
    main()

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *