中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中怎么實現自動化處理文件

發布時間:2021-07-10 16:33:32 來源:億速云 閱讀:141 作者:Leah 欄目:編程語言

Python中怎么實現自動化處理文件,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

遍歷一個目錄中的文件

如果有如下多個數據需要讀取和處理:

├── data │   ├── data1.csv │   ├── data2.csv │   └── data3.csv └── main.py

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

import pandas as pd def process_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)

這是可行的,但是當有超過三個數據時,效率就會變得很低。如果上述腳本中唯一改變的是數據,為什么不用for循環來訪問每個數據呢?

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

import os       import pandas as pd       defloop_directory(directory:str):          '''Loop files in thedirectory'''                  for filename in os.listdir(directory):              if filename.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

對上面腳本的解釋如下:

  • for filename in os.listdir(directory) : 在一個指定的目錄中遍歷文件。

  • if filename.endswith(".csv") :運行(訪問?)以‘.csv’ 結尾的文件。

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

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

如果不存在,就創建嵌套文件

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

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

model ├── model1 │   ├── NaiveBayes │   └── XGBoost │       ├── version_1 │       └── version_2 └── model2     ├── NaiveBayes     └── XGBoost         ├── version_1         └── version_2

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

defcreate_path_if_not_exists(datapath):                                      '''Create the new file if not exists andsave the data'''                  ifnot os.path.exists(datapath):                                          os.makedirs(datapath)                                                                           if __name__=='__main__':                           create_path_if_not_exists('model/model1/XGBoost/version_1')

運行上面的文件,可以看到嵌套文件‘model/model2/XGBoost/version_2’自動建成了。現在便可以將模型或者數據儲存到新的目錄里了!

import joblib       import os              defcreate_path_if_not_exists(datapath):           '''Create thenew file if not exists and save the data'''                  ifnot os.path.exists(datapath):              os.makedirs(datapath)              if __name__=='__main__':                # Create directory        model_path ='model/model2/XGBoost/version_2'         create_path_if_not_exists(model_path)           # Save file        joblib.dump(model, model_path)

Bash for循環:用不同參數運行一個文件

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

import joblib              # df = ...              model_path ='model/model1/XGBoost/version_1'       model = joblib.load(model_path)       model.predict(df)

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

有的,可以使用bash for循環。首先,使用sys.argv來解析命令行參數。如果想要在命令行上重寫配置文件可以使用類如hydra的工具。

import sys       import joblib              # df = ...                  model_type = sys.argv[1]       model_version = sys.argv[2]       model_path =f'''model/model1/{model_type}/version_{model_version}'''       print('Loading modelfrom', model_path, 'for training')              model = joblib.load(model_path)       mode.predict(df) >>> python train.py XGBoost 1 Loading model from model/model1/XGBoost/version_1 for training

腳本已經被指令為使用模具第一版的XGBoost來預測命令行上的數據。現在便能在不同版本的模具中使用bash  for循環。如果能用Python使用for循環,也可以在如下的終端上達成上述的目標。

$ for version in 2 3 4 > do > python train.py XGBoost $version > done

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

Loading model from model/model1/XGBoost/version_1 for training Loading model from model/model1/XGBoost/version_2 for training Loading model from model/model1/XGBoost/version_3 for training Loading model from model/model1/XGBoost/version_4 for training

關于Python中怎么實現自動化處理文件問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大渡口区| 平江县| 绍兴市| 连山| 南溪县| 黔西| 老河口市| 宜城市| 闵行区| 藁城市| 共和县| 富川| 延寿县| 渝中区| 东阿县| 石门县| 嘉鱼县| 惠水县| 呈贡县| 广州市| 明水县| 澄迈县| 苍溪县| 彭泽县| 达拉特旗| 南宁市| 安阳市| 金塔县| 团风县| 双辽市| 襄樊市| 香河县| 保靖县| 博客| 琼海市| 周至县| 虹口区| 太谷县| 原平市| 关岭| 黑河市|