![](/img/trans.png)
[英]How to read in a file and output the file with the same file name into another subfolder using pathlib.Path().glob()
[英]How to iterate through a directory and read in 2 files at each iteration using pathlib.Path().glob()
使用 pathlib.Path().glob(),我們如何遍歷一個目錄並在每次迭代時讀入 2 個文件?
假設我的目錄C:\Users\server\Desktop\Dataset
如下所示:
P1_mean_fle.csv
P2_mean_fle.csv
P3_mean_fle.csv
P1_std_dev_fle.csv
P2_std_dev_fle.csv
P3_std_dev_fle.csv
如果我只想在 Pi 的每次迭代中讀取 1 個文件,我的代碼將如下所示:
from pathlib import Path
import pandas as pd
file_path = r'C:\Users\server\Desktop\Dataset'
param_file = 'P*' + '_mean_fle.csv'
for i, fle in enumerate(Path(file_path).glob(param_file)):
mean_fle = pd.read_csv(fle).values
results = tuning(mean_fle) #tuning is some function which takes in the file mean
#and does something with this file
現在,我如何在 Pi 的每次迭代中讀取 2 個文件? 下面的代碼不太有效,因為param_file
只能分配一種文件名類型。 如果有辦法使用pathlib
做到這一點,將不勝感激。
from pathlib import Path
import pandas as pd
param_file = 'P*' + '_mean_fle.csv'
param_file = 'P*' + '_std_dev_fle.csv' #this is wrong
for i, fle in enumerate(Path(file_path).glob(param_file)): #this is wrong inside the glob() part
mean_fle = pd.read_csv(fle).values
std_dev_fle = pd.read_csv(fle).values
results = tuning(mean_fle, std_dev_fle) #tuning is some function which takes in the two files mean
#and std_dev and does something with these 2 files
先感謝您。
如果您的文件名遵循示例中的確定性規則,則最好的選擇是迭代一種文件,並通過字符串替換找到相應的文件。
from pathlib import Path
import pandas as pd
file_path = r'C:\Users\server\Desktop\Dataset'
param_file = 'P*' + '_mean_fle.csv'
for i, fle in enumerate(Path(file_path).glob(param_file)):
stddev_fle = fle.with_name(fle.name.replace("mean", "std_dev"))
mean_values = pd.read_csv(fle).values
stddev_values = pd.read_csv(stddev_fle).values
results = tuning(mean_values, stddev_values)
我建議你兩種方法:
1.
如果您確定所有文件的編號都沒有“漏洞”,則可以只使用沒有“glob”的文件:
mean_csv_pattern = 'P{}_mean_fle.csv'
std_dev_pattern = 'P{}_std_dev_fle.csv'
i = 0
while True:
i += 1
try:
mean_fle = pd.read_csv(mean_csv_pattern.format(i)).values
std_dev_fle = pd.read_csv(std_dev_pattern.format(i)).values
except (<put your exceptions here>):
break
results = tuning(mean_fle, std_dev_fle)
2.
使用預取操作獲取所有文件並將它們放入可以在主循環中查詢的結構中。
Glob 用於平均文件,glob 用於 std_dev 文件,從文件名中獲取數字並生成字典 {index: {'mean_file': mean_file, 'std_file': std_file)} 然后循環排序字典鍵...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.