国产睡熟迷奷白丝护士系列精品,中文色字幕网站,免费h网站在线观看的,亚洲开心激情在线

      <sup id="hb9fh"></sup>
          1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

            手機站
            千鋒教育

            千鋒學習站 | 隨時隨地免費學

            千鋒教育

            掃一掃進入千鋒手機站

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

            關(guān)注千鋒學習站小程序
            隨時隨地免費學習課程

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

            用Python來自動化處理文件

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

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

            ·遍歷一個目錄中的文件

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

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

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

            遍歷一個目錄中的文件

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

            ├──data

            │├──data1.csv

            │├──data2.csv

            │└──data3.csv

            └──main.py

            可以手動地一次讀取一個文件:

            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)

            這是可行的,但是當有超過三個數(shù)據(jù)時,效率就會變得很低。如果上述腳本中唯一改變的是數(shù)據(jù),為什么不用for循環(huán)來訪問每個數(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):在一個指定的目錄中遍歷文件。

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

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

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

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

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

            在使用各個機器學習模型時,我們甚至想要去保存不同樣式的模型,因為它們所運用的超參數(shù)存在不同。因此,模型目錄就像下面的示例一樣復雜:

            model

            ├──model1

            │├──NaiveBayes

            │└──XGBoost

            │├──version_1

            │└──version_2

            └──model2

            ├──NaiveBayes

            └──XGBoost

            ├──version_1

            └──version_2

            對每個所創(chuàng)的模型手動地建立嵌套文件可能需要花費很長的時間。有沒有能夠自動化這個進程的方法?有,通過使用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')

            運行上面的文件,可以看到嵌套文件‘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ù)運行一個文件

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

            importjoblib

            #df=...

            model_path='model/model1/XGBoost/version_1'

            model=joblib.load(model_path)

            model.predict(df)

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

            有的,可以使用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來預測命令行上的數(shù)據(jù)?,F(xiàn)在便能在不同版本的模具中使用bashfor循環(huán)。如果能用Python使用for循環(huán),也可以在如下的終端上達成上述的目標。

            $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)在便可以讓腳本使用不同的模具來運行啦!

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

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

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