Проходить и переименовывать файлы - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь перебрать папку, содержащую кучу других папок с заголовками Spec01, Spec02, Speco03, ..., Spec14.В каждой из папок Spec есть несколько файлов, но в каждой папке мне нужен один файл specimen.dat.Я хочу перебрать каждую папку, преобразовать ее в файл Excel и сохранить ее с именем родительской папки, т.е. Spec ##.

Часть моего кода для панд работает нормально сама по себе, но когда я добавлю цикл for, я получу только один файл с именем [] .xlsx.Я считаю, что мой цикл просто переписывает сам себя

Вот мой код, с которым я работаю


import pandas as pd
import os

your_path = 'C:/Users/abh85/Desktop/AAA/'
for root, dirs, files in os.walk(your_path):
    for subdir in files:
            if subdir.endswith('.dat'):
                with open(os.path.join(root, subdir)) as f1:
                    #change skiprow as needed
                    df = pd.read_csv(f1, sep='\s+', skiprows = 4, error_bad_lines = False) 
                    df = df.apply(pd.to_numeric, errors ='coerce')
                    df = df.dropna() #drop blank rows from coerce process
                    #manually change column names per test data acquisition
                    df.columns = ['Time (s)', 'Displacement (mm)', 'ExDisp (mm)', 'CMOD (mm)', 'Force (kN)']
                    df.to_excel('C:/Users/abh85/Desktop/xls/%s.xlsx' %dirs, index=False)

Я знаю, что переименование не работает, потому что, как я называю "dirs" впетля.Следующий код дает мне имена, которые я хочу, но я не знаю, как их включить:

import os 

your_path = 'C:/Users/abh85/Desktop/AAA/'
for path, dirs, files in os.walk(your_path):
    for name in dirs:
        print(name)

Я могу загрузить почтовый индекс с образцами папок.

1 Ответ

0 голосов
/ 05 апреля 2019

Итак, я придумал это.Я все еще новичок в Python, поэтому я не уверен, что это самый эффективный ответ, но, похоже, он помогает:

import os

your_path = 'C:/Users/abh85/Desktop/AAA/'
file_names = []

i = 0

for root, dirs, files in os.walk(your_path):
    for name in dirs:
        file_names.append(name)


    for subdir in files:
            if subdir.endswith('.dat'):
                with open(os.path.join(root, subdir)) as f1:
            #change skiprow as needed
                          df = pd.read_csv(f1, sep='\s+', skiprows = 4, error_bad_lines = False) 
                          df = df.apply(pd.to_numeric, errors ='coerce')
                          df = df.dropna() #drop blank rows from coerce process
            #manually change column names per test data acquisition
                          df.columns = ['Time (s)', 'Displacement (mm)', 'ExDisp (mm)', 'CMOD (mm)', 'Force (kN)']
                          df.to_excel('C:/Users/abh85/Desktop/xls/%s.xlsx' %file_names[i], index=False)
                          i += 1

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