久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

        手機(jī)站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

        千鋒教育

        掃一掃進(jìn)入千鋒手機(jī)站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

        當(dāng)前位置:首頁  >  技術(shù)干貨  > 用Python來自動化處理文件

        用Python來自動化處理文件

        來源:千鋒教育
        發(fā)布人:xqq
        時(shí)間: 2023-11-07 04:19:32 1699301972

        當(dāng)代碼投入生產(chǎn)時(shí),你需要去組織代碼的文件。讀寫、創(chuàng)建和運(yùn)行許多代碼文件是件非常耗時(shí)的事。本文將展示如何自動化這些繁瑣的操作:

        ·遍歷一個(gè)目錄中的文件

        ·創(chuàng)建尚未建立的嵌套文件

        ·使用bashfor循環(huán)來運(yùn)行一個(gè)有多個(gè)輸入端的文件

        處理數(shù)據(jù)科學(xué)項(xiàng)目時(shí),這些技巧為筆者節(jié)省了大量的時(shí)間。希望對你也有用!

        遍歷一個(gè)目錄中的文件

        如果有如下多個(gè)數(shù)據(jù)需要讀取和處理:

        ├──data

        │├──data1.csv

        │├──data2.csv

        │└──data3.csv

        └──main.py

        可以手動地一次讀取一個(gè)文件:

        importpandasaspddefprocess_data(df):

        passdf=pd.read_csv(data1.csv)

        process_data(df)df2=pd.read_csv(data2.csv)

        process_data(df2)df3=pd.read_csv(data3.csv)

        process_data(df3)

        這是可行的,但是當(dāng)有超過三個(gè)數(shù)據(jù)時(shí),效率就會變得很低。如果上述腳本中唯一改變的是數(shù)據(jù),為什么不用for循環(huán)來訪問每個(gè)數(shù)據(jù)呢?

        下面的腳本允許我們遍歷指定目錄中的文件:

        importos

        importpandasaspd

        defloop_directory(directory:str):

        '''Loopfilesinthedirectory'''

        forfilenameinos.listdir(directory):

        iffilename.endswith(".csv"):

        file_directory=os.path.join(directory,filename)

        print(file_directory)

        pd.read_csv(file_directory)

        if__name__=='__main__':

        loop_directory('data/')

        data/data3.csv

        data/data2.csv

        data/data1.csv

        對上面腳本的解釋如下:

        ·forfilenameinos.listdir(directory):在一個(gè)指定的目錄中遍歷文件。

        ·iffilename.endswith(".csv"):運(yùn)行(訪問?)以‘.csv’結(jié)尾的文件。

        ·file_directory=os.path.join(directory,filename):連接父目錄('data')和該目錄中的文件。

        現(xiàn)在就可以在‘data’目錄中訪問所有的文件啦!

        如果不存在,就創(chuàng)建嵌套文件

        有時(shí)你可能想要通過創(chuàng)建嵌套文件來管理代碼或模型,在之后更容易地尋找。比如,可以運(yùn)用‘model1’來明確規(guī)定一個(gè)有著具體特征的程序。當(dāng)使用model1時(shí),你可能想要嘗試運(yùn)用不同種類的機(jī)器學(xué)習(xí)模型來訓(xùn)練數(shù)據(jù)(‘model1/XGBoost’)。

        在使用各個(gè)機(jī)器學(xué)習(xí)模型時(shí),我們甚至想要去保存不同樣式的模型,因?yàn)樗鼈兯\(yùn)用的超參數(shù)存在不同。因此,模型目錄就像下面的示例一樣復(fù)雜:

        model

        ├──model1

        │├──NaiveBayes

        │└──XGBoost

        │├──version_1

        │└──version_2

        └──model2

        ├──NaiveBayes

        └──XGBoost

        ├──version_1

        └──version_2

        對每個(gè)所創(chuàng)的模型手動地建立嵌套文件可能需要花費(fèi)很長的時(shí)間。有沒有能夠自動化這個(gè)進(jìn)程的方法?有,通過使用os.makedirs(datapath)。

        defcreate_path_if_not_exists(datapath):

        '''Createthenewfileifnotexistsandsavethedata'''

        ifnotos.path.exists(datapath):

        os.makedirs(datapath)

        if__name__=='__main__':

        create_path_if_not_exists('model/model1/XGBoost/version_1')

        運(yùn)行上面的文件,可以看到嵌套文件‘model/model2/XGBoost/version_2’自動建成了?,F(xiàn)在便可以將模型或者數(shù)據(jù)儲存到新的目錄里了!

        importjoblib

        importos

        defcreate_path_if_not_exists(datapath):

        '''Createthenewfileifnotexistsandsavethedata'''

        ifnotos.path.exists(datapath):

        os.makedirs(datapath)

        if__name__=='__main__':

        #Createdirectory

        model_path='model/model2/XGBoost/version_2'

        create_path_if_not_exists(model_path)

        #Savefile

        joblib.dump(model,model_path)

        Bashfor循環(huán):用不同參數(shù)運(yùn)行一個(gè)文件

        如果要運(yùn)行一個(gè)具有不同參數(shù)的文件怎么辦呢?比如,可能要用同一個(gè)腳本去預(yù)測使用不同模型的數(shù)據(jù)。

        importjoblib

        #df=...

        model_path='model/model1/XGBoost/version_1'

        model=joblib.load(model_path)

        model.predict(df)

        如果一個(gè)腳本需要長時(shí)間來運(yùn)行且有著多個(gè)要運(yùn)行的模型,用腳本一個(gè)一個(gè)地運(yùn)行會是非常耗時(shí)。有什么辦法能讓電腦獨(dú)立自動地用一條命令行運(yùn)行第1,2,3...,10個(gè)模型嗎?

        有的,可以使用bashfor循環(huán)。首先,使用sys.argv來解析命令行參數(shù)。如果想要在命令行上重寫配置文件可以使用類如hydra的工具。

        importsys

        importjoblib

        #df=...

        model_type=sys.argv[1]

        model_version=sys.argv[2]

        model_path=f'''model/model1/{model_type}/version_{model_version}'''

        print('Loadingmodelfrom',model_path,'fortraining')

        model=joblib.load(model_path)

        mode.predict(df)

        >>>pythontrain.pyXGBoost1

        Loadingmodelfrommodel/model1/XGBoost/version_1fortraining

        腳本已經(jīng)被指令為使用模具第一版的XGBoost來預(yù)測命令行上的數(shù)據(jù)?,F(xiàn)在便能在不同版本的模具中使用bashfor循環(huán)。如果能用Python使用for循環(huán),也可以在如下的終端上達(dá)成上述的目標(biāo)。

        $forversionin234

        >do

        >pythontrain.pyXGBoost$version

        >done

        敲擊Enter來分隔各行,輸出:

        Loadingmodelfrommodel/model1/XGBoost/version_1fortraining

        Loadingmodelfrommodel/model1/XGBoost/version_2fortraining

        Loadingmodelfrommodel/model1/XGBoost/version_3fortraining

        Loadingmodelfrommodel/model1/XGBoost/version_4fortraining

        現(xiàn)在便可以讓腳本使用不同的模具來運(yùn)行啦!

        恭喜!現(xiàn)在你已經(jīng)學(xué)會如何一次自動地讀取和創(chuàng)造多個(gè)文件,如何用不同的參數(shù)運(yùn)行一個(gè)文檔,過去丟在瑣碎工作中的時(shí)間可以利用起來做更重要的任務(wù)啦。

        以上內(nèi)容為大家介紹了用Python來自動化處理文件,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/

        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
        免費(fèi)領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        使用Cython為Python編寫更快的C擴(kuò)展

        使用Python很有趣,但有時(shí),用它編寫的程序可能很慢。所有的運(yùn)行時(shí)動態(tài)調(diào)度會帶來很大的代價(jià):有時(shí)它比用C或Rust等系統(tǒng)語言編寫的等效代碼慢10...詳情>>

        2023-11-07 07:23:08
        Python字符串連接

        字符串是Python中常用的數(shù)據(jù)類型,在開發(fā)過程中可以對字符創(chuàng)進(jìn)行截取并與其他字符創(chuàng)進(jìn)行連接。下面小編整理了5種方法完成Python字符創(chuàng)的連接!加...詳情>>

        2023-11-07 06:47:08
        數(shù)據(jù)科學(xué)中必須了解的Python核心庫

        python有三個(gè)核心數(shù)據(jù)科學(xué)庫,在此基礎(chǔ)上還創(chuàng)建了許多其他的庫。這三個(gè)核心數(shù)據(jù)科學(xué)庫分別為:NumpyScipyMatplotlib簡單起見,可以把Numpy視為...詳情>>

        2023-11-07 06:39:56
        如何讓Python代碼更易維護(hù)

        檢查你的代碼的質(zhì)量,通過這些外部庫使其更易維護(hù)??勺x性很重要?!狿ython之禪TheZenofPython,TimPeters隨著軟件項(xiàng)目進(jìn)入“維護(hù)模式”,對可...詳情>>

        2023-11-07 06:14:44
        Pylint讓Python代碼保持一致

        當(dāng)你想要爭論代碼復(fù)雜性時(shí),Pylint是你的朋友。Pylint是更高層級的Python樣式強(qiáng)制程序。而flake8和black檢查的是“本地”樣式:換行位置、注釋...詳情>>

        2023-11-07 06:00:20
        赤水市| 西宁市| 绿春县| 海淀区| 南昌县| 梁山县| 灵宝市| 嘉荫县| 昔阳县| 奉节县| 邢台县| 自贡市| 西青区| 天门市| 阳山县| 杭锦后旗| 呼玛县| 萨迦县| 麻栗坡县| 多伦县| 宣汉县| 增城市| 湟源县| 长子县| 兖州市| 凤冈县| 民和| 正镶白旗| 潮安县| 廊坊市| 曲麻莱县| 铁岭县| 温泉县| 仁化县| 西乌| 城固县| 伊金霍洛旗| 泌阳县| 郸城县| 聂荣县| 临漳县|