2018-09-10 day16總結(jié)

1.文件操作

a.操作流程:打開文件(open)-操作文件-關(guān)閉文件(close)
with open() as 文件變量名:
文件操作
open(文件路徑,打開方式,encoding = 編碼方式)
b.打開方式
r/rb/br:讀
w/wb/bw/a:寫,當文件路徑不存在的時候回自動創(chuàng)建那個文件
c.編碼方式
文本編碼,二進制不能去設(shè)置
d.讀(read)、寫(write)
e.json文件/json數(shù)據(jù)
json數(shù)據(jù)的格式:只有一個數(shù)據(jù),并且類型必須是json支持得了的數(shù)據(jù)類型
數(shù)據(jù)類型及其表現(xiàn):數(shù)組、對象(字典)、數(shù)字、符號、布爾
python對json的支持:
load(文件對象:獲取json文件中的數(shù)據(jù),并且轉(zhuǎn)換成相應(yīng)的python數(shù)據(jù))
loads(合適的字符串):將字符串轉(zhuǎn)換成python數(shù)據(jù)
jump():將python數(shù)據(jù)轉(zhuǎn)換成json數(shù)據(jù)然后再寫到j(luò)son文件中
dumps():將python數(shù)據(jù)轉(zhuǎn)換成json格式的字符串
f.數(shù)據(jù)本地化和持久化
將數(shù)據(jù)number的值轉(zhuǎn)數(shù)據(jù)本地化
先從本地去取值---->對取出來的值進行處理---->再將新的值存到本地

2.異常捕獲

try:
需要捕獲異常的代碼
except:
異常發(fā)生
finally:
不管異常發(fā)不發(fā)生,都執(zhí)行

a.except: 捕獲所有異常 b.except 類型名: 捕獲指定的異常(這個結(jié)構(gòu)可以出現(xiàn)多次)
c.except (類型名1, 類型名2...):

拋出異常
raise 異常類型

異常類型:要求必須是Exception的子類

3.類和對象

1.概念
類:具有相同功能和屬性的集合(抽象的)
對象:類的實例(具體)
2.類的聲明
class 類名(父類):
類的說明文檔
類的內(nèi)容

3)**創(chuàng)建對象
a.格式:對象 = 類名()
b.通過調(diào)用構(gòu)造方法創(chuàng)建對象的時候,會自動調(diào)用init方法去對對象進行初始化
c.init方法的傳參

4)屬性
對象屬性:
a.init方法中聲明,self.屬性名 = 值
b.通過對象去使用
c.對象屬性的增刪(了解), 獲取對象屬性的值和修改對象屬性值(掌握)---> 對象.屬性

類的字段:
a.直接聲明在類中的變量
b.通過類去使用 --> 類.字段

私有化、保護類型(getter和setter)等 ----> 能掌握最好

5)方法
對象方法:
a.直接聲明在類的方法
b.自帶一個self參數(shù)(self不需要傳參,指向當前對象)
c.對象方法通過對象調(diào)用
d.需要使用對象的屬性才用對象方法

類方法:
a.@classmethod修飾
b.自帶一個cls參數(shù)(cls不需要傳參,指向當前類)
c.類方法通過類調(diào)用
d.需要使用類的字段的時候使用類方法

靜態(tài)方法:
a.@staticmethod修飾
b.沒有自帶參數(shù)
c.通過類來調(diào)用
d.不需要對象屬性的時候就可以使用

本質(zhì)上,python中的類可以調(diào)用類中所有的方法

4類的補充

1.多繼承
python中的類支持多繼承,但是不建議使用
多繼承繼承的時候,子類可以擁有父類的所有的方法和類的字段,但是只能繼承第一個父類的對象屬性
2.多態(tài)
多態(tài)指的是一種事物有多種形態(tài)
有繼承就有多態(tài):不同類繼承自同一個類,其實就是對這個共同的父類的不同的形態(tài),繼承后對方法的重寫也是多態(tài)的表現(xiàn)
3.封裝、繼承、多態(tài)
封裝:一個類可以通過不同的方法對不同的功能進行封裝,通過屬性對不同的數(shù)據(jù)進行封裝
繼承:通過繼承可以讓子類擁有父類的屬性和方法
4.包
將多個模塊封裝到一起,就是包。包就是有一個默認文件init.py的文件夾
a.import 包.模塊
import download.saveData
download.saveData.save_data_json('abc')

b.from 包 import 模塊
from download import downloadData
downloadData.http_downoad('一人之下')

c.from 包.模塊 import 方法/變量/類
from download.saveData import insert_db
insert_db('賬號')

  1. raise 錯誤類型
    raise可以讓程序主動崩潰,一般用于調(diào)試
    raise:關(guān)鍵字
    錯誤類型:必須是一個類,并且這個類是Exception的子類
    歌詞解析
class Lyric:
    def __init__(self,time,word):
        self.time = time
        self.word = word
    def __str__(self):
        return "%.2f %s" % (self.time,self.word)
    def __gt__(self, other):
        return self.time >other.time



class LyricAnalysis:
    """歌詞解析類"""
    def __init__(self,song_name):
        #一個歌詞解析器對象對應(yīng)一首歌
        self.song_name = song_name
        #一首歌對應(yīng)一個容器
        self.all_lyric = []

        #解析歌詞
        self.collect_lyric()


    def get_time_word(self,content):
        contents = content.split("]")
        word = contents[-1]
        for time in contents[:-1]:
            times = time[1:].split(":")
            fen = float(times[0])
            miao = float(times[1])
            new_time = fen*60 + miao
            # print(new_time,word)
            #根據(jù)時間和詞創(chuàng)建歌詞對象
            lyric = Lyric(new_time,word)
            self.all_lyric.append(lyric)



    def collect_lyric(self):
        """將時間和詞提取出來"""
        try:

            with open("./files/%s.txt" % self.song_name,"r",encoding="utf-8") as f:
                line = f.readline()
                while line:
                    #將每一行的內(nèi)容和詞顯示出來
                    self.get_time_word(line)
                    line = f.readline()

                #排序
                self.all_lyric.sort(reverse=True)
                # for lyric in self.all_lyric:
                #     print(lyric)

        except:
            print("文件不存在")

    def get_word(self,time):
        for lyric in self.all_lyric:
            if lyric.time <= time:
                return lyric.word

song1 = LyricAnalysis("藍蓮花")
song1.collect_lyric()
print(song1.get_word(20))
輸出:
你的心了無牽掛
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,563評論 19 139
  • 【回顧盤面】: 10月12日(周四)兩市探底回升收十字星,滬指收報3386點,跌0.06%;深成指報11307點...
    齊利閱讀 304評論 5 7
  • 窗外的風夾雜著些許滾滾的熱氣。然而不時也傳來陣陣輕風。一年了,既悲慘又快樂的復讀時光伴隨著6月8日下午5點的鈴聲結(jié)...
    來自星星島閱讀 404評論 0 0
  • 這個下午,各種碰撞! 每個人都有自己的風格,會在各個方面表現(xiàn)出來:比如著衣喜好,表達習慣,思考角度…讓性格迥異的幾...
    兮兮0225閱讀 234評論 1 0
  • (萬尚學習會)打卡第160天 姓名:陸春菊 部門:財務(wù)部 組別:反省一組 【知~學習】 《京瓷哲學》001部分:第...
    陸春菊閱讀 5,595評論 0 0

友情鏈接更多精彩內(nèi)容