Выполнить итерацию сценария по нескольким папкам в главной папке - PullRequest
0 голосов
/ 07 ноября 2019

Я написал скрипт, который извлекает столбцы из нескольких файлов CSV (оставаясь в папке с именем SIM1) и сохраняет их в текстовом файле. Теперь мне нужно повторить этот скрипт для нескольких папок (SIM2, SIM3, SIM4, ...). Все эти папки на SIM-карте находятся в одной главной папке. Я буду очень признателен, если смогу получить помощь по итерации? (Я использую Python 3.7)

    import os
    import pandas as pd
    import numpy as np
    import csv

    os.chdir(r'D:\GRIDS\SIM1')

    ppt = pd.read_csv("ppt.csv")
    et = pd.read_csv("et.csv")
    tmx = pd.read_csv("tmax.csv")
    weather_SIM = pd.read_csv("Weather_SIM1.csv")

    big_frame = pd.concat([weather_SIM, ppt,et,tmx], axis=1)

    np.savetxt('Weather.txt', big_frame, fmt= "%0.0f\t %0.0f\t %0.0f\t %0.1f\t %0.1f\t %0.1f", header='Year\t Month\t Date\t ppt\t et\t tmax', comments='')

1 Ответ

1 голос
/ 07 ноября 2019

Попробуйте это

import os
import pandas as pd
import numpy as np
import csv

master_path = '<master dir path>'
subfolders = list(filter(lambda x: os.path.isdir(os.path.join(master_path, x)), os.listdir(master_path)))
for folder in subfolders:

    ppt = pd.read_csv(f"{master_path}/{folder}/ppt.csv")
    et = pd.read_csv(f"{master_path}/{folder}/et.csv")
    tmx = pd.read_csv(f"{master_path}/{folder}/tmax.csv")
    weather_SIM = pd.read_csv(f"{master_path}/{folder}/Weather_SIM1.csv")

    big_frame = pd.concat([weather_SIM, ppt,et,tmx], axis=1)

    np.savetxt(f"{master_path}/{folder}/Weather.txt", big_frame, fmt= "%0.0f\t %0.0f\t %0.0f\t %0.1f\t %0.1f\t %0.1f", header='Year\t Month\t Date\t ppt\t et\t tmax', comments='')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...