Как я могу разрешить папки с Python? - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь решить эту проблему:

Имеет древовидную структуру, подобную этой:

── geny16
│   ├── gen26xgeny16
│   │   ├── sustrato270
│   │   │   ├── sustrato270_data01.dat
│   │   │   ├── sustrato270_data02.dat
│   │   │   └── sustrato270_data03.dat
│   │   ├── sustrato90
│   │   │   ├── sustrato90_data01.dat
│   │   │   ├── sustrato90_data02.dat
│   │   │   └── sustrato90_data03.dat
│   │   ├── tentata0
│   │   │   ├── tentata0_data01.dat
│   │   │   ├── tentata0_data02.dat
│   │   │   └── tentata0_data03.dat
│   │   └── tenteta90
│   │   │   ├── tentata90_data01.dat
│   │   │   ├── tentata90_data02.dat
│   │   │   └── tentata90_data03.dat
│   └── gen40xgeny16
│       ├── sustrato270
│       ├── sustrato90
│       ├── tenteta0
│       └── tenteta90
└── geny9
    ├── gen16xgeny9
    │   ├── sustrato270
    ├── sustrato90
    │   ├── tenteta0
    │   └── tenteta90
    ├── gen26xgeny9
    │   ├── sustrato270
    │   ├── sustrato90
    │   ├── tenteta0
    │   └── tenteta90
    └── gen40xgen9y
        ├── sustrato270
        ├── sustrato90
        ├── tenteta0
        └── tenteta90

, в каждой более глубокой папке есть несколько файлов .dat, которыми я буду манипулировать и чертитьс матплотлибом. Когда я использую скрипт Python внутри более глубокой папки, моя работа завершается: читать каждый файл данных, нормализовать столбец, суперразмещать и строить данные;но так как это та же задача для каждой глубокой папки, я хотел бы оставить сценарий в корневой папке, и он проходит через подпапки для манипулирования и отображения данных.

Я могу перечислить имя каждого элемента вдерево с этим кодом:

rootDir = '.'

for dirName, subdirList, fileList in os.walk(rootDir):
    print('Directorio encontrado: %s' % subdirList)
    for fname in fileList:
        print('\t%s' % fname)

Но это всего лишь список имен, как я могу использовать этот список для навигации и выполнения своего скрипта для манипулирования и отображения данных в каждой более глубокой папке?

Заранее благодарим за ваши комментарии и предложения.

Густаво.

1 Ответ

0 голосов
/ 08 ноября 2019

Вы можете использовать pathlib

from pathlib import Path

root_dir = '.' # __file__
d = Path(root_dir).glob('*/*/*/*.dat') #*==any folder/file

for i in d:
    print(i.name, i.parent, i.parts[-2])
    print(i.resolve())
    print(i.stem)

    # code to manipulate these files here
    # e.g read, visualise and store data

Посмотрите, что вы получите. Вы можете делать все, что вы хотите с файлами

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