L oop функции для нескольких файлов - PullRequest
0 голосов
/ 12 февраля 2020

Я новое программирование на python, и я хотел бы знать метод для следующего выпуска.

У меня есть python Скрипт, который собирает данные из экспериментов и сохраняет их в формате .csv организованы по столбцам.

Используя нижеприведенную функцию, я могу создавать папки в день (DATE-папка), в которых проводится эксперимент, и подпапки (Run_ (j)) при каждом запуске. скрипт, приобретающий 5 файлов в подпапке.

DATE      = datetime.now().strftime("%Y-%m-%d")

if not os.path.isdir(os.path.join(os.getcwd(), DATE)):
    os.makedirs(DATE)

def move_files():
    os.chdir(DATE)
    for j in range(1, 101):
        if not os.path.exists(os.path.join(os.getcwd(), 'Run_'+ str(j))):
            break
    os.makedirs('Run_' + str(j))
    src_files = os.listdir(os.curdir)
    for file_name in src_files:
        full_file_name = os.path.join(os.curdir, file_name)
        if os.path.isfile(full_file_name):
            shutil.move(full_file_name, 'Run_' + str(j))

В качестве примера я получаю что-то вроде этого:

DATE/ Run_1 / File_sweep_1.csv,File_sweep_2.csv,File_sweep_3.csv,File_sweep_4.csv,File_sweep_5.csv
      Run_2 / File_sweep_1.csv,File_sweep_2.csv,File_sweep_3.csv,File_sweep_4.csv,File_sweep_5.csv
        .
        .
      Run_j / File_sweep_1.csv,File_sweep_2.csv,File_sweep_3.csv,File_sweep_4.csv,File_sweep_5.csv

Теперь я хочу использовать другой скрипт для анализа данных из эксперимента, избегая изменения пути к каталогу. что файлы, скажем, делают их как в l oop как-то. До того момента, пока я не использовал это:

os.chdir('MainPath/2020-02-12/Run_1')
print('You are working on this directory:\n', os.getcwd(), '\n')
print('The files in the directory are:\n',os.listdir(), '\n')

data = pd.read_csv("File_sweep_1.csv") 

Затем я применяю свою функцию и получаю свои результаты, однако я хочу избежать ручного изменения File_sweep_1.csv, File_sweep_2.csv ... File_sweep_5.csv.

В основном я хочу, чтобы я запускал свою функцию для анализа и чтобы она применялась к каждому файлу в каждой подпапке Run_ (j) внутри DATE-папки. Папка DATE не является неудобной, потому что я могу изменить ее вручную, когда это необходимо.

У вас есть какие-либо советы о том, как действовать?

1 Ответ

0 голосов
/ 12 февраля 2020

Я думаю, что это эффективный способ загрузить все файлы в определенную папку c

import os 

def load_data():
    folder = 'MainPath/2020-02-12/Run_1'
    for root, _, files in os.walk(folder):
        for file in files:
            if file.endswith(".csv"):
                yield pd.read_csv(root + os.path.sep + file)

for data in load_data():
    # do something with the data

Метод python walk () генерирует имена файлов в дереве каталогов путем обхода дерева либо сверху вниз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...