Python練習 #10-建立實體方法

by Gemma

本周目標

熟悉Python的基礎語法與資料結構

任務

  • 學習函數的定義和使用(Parameters、Return Values)
  • 練習設計和使用函數,並完成更多字串處理練習(例如文字查找和替換)
  • 學習file open, write, read指令
  • 學習json指令
  • 練習從公開網站讀取資料並寫入文件
  • 建立實體物件與實體屬性
  • 建立實體方法與應用

專案練習

先建立兩個文字檔案.txt,使用實體方法抓取文字資料

data1.txtx

4點半起床了

data2.txt

大家早上好

定義file類別

使用__init__方法8存入實體屬性名稱name

初始值為None

class file:
    def __init__(self,name):
        self.name=name
        self.file=None

定義實體方法open開啟檔案self.name

class file:
    def __init__(self,name):
        self.name=name
        self.file=None
    def open(self):
        self.file=open(self.name, mode="r" ,encoding="utf-8")

定義實體方法read讀取檔案self.name文字並回傳值

class file:
    def __init__(self,name):
        self.name=name
        self.file=None
    def open(self):
        self.file=open(self.name, mode="r" ,encoding="utf-8")
    def read(self):
        return self.file.read()

應用在data1和data2文字檔

class file:
    def __init__(self,name):
        self.name=name
        self.file=None
    def open(self):
        self.file=open(self.name, mode="r" ,encoding="utf-8")
    def read(self):
        return self.file.read()
    
f1=file("1116data1.txt")
f1.open()
result=f1.read()
print(result)

f2=file("1116data2.txt")
f2.open()
result=f2.read()
print(result)

Output

4點半起床了
大家早上好

Review

沒有檢查檔案是否存在

沒有關閉檔案,建議加上close方法

重複開始檔案

以下chatgpt示範

class File:
    def __init__(self, name):
        self.name = name
        self.file = None

    def open(self):
        try:
            self.file = open(self.name, mode="r", encoding="utf-8")
        except FileNotFoundError:
            print(f"檔案 {self.name} 不存在")

    def read(self):
        if self.file:
            return self.file.read()
        else:
            print("檔案尚未開啟")
            return ""

    def close(self):
        if self.file:
            self.file.close()
            print(f"檔案 {self.name} 已關閉")

# 使用範例
f1 = File("1116data1.txt")
f1.open()
result = f1.read()
print(result)
f1.close()

f2 = File("1116data2.txt")
f2.open()
result = f2.read()
print(result)
f2.close()

You may also like

Leave a Comment