Открытие и чтение нескольких файлов в разных каталогах

У меня есть огромный список каталогов. С моим текущим каталогом /home самым высоким уровнем является год. Всего семь лет: 2010, 2011, 2012, 2013, 2014, 2015 и 2016 годы.

Затем есть подкаталоги для каждого месяца, например, /home/2010/01. Есть, конечно, двенадцать месяцев, каждый из которых помечен как 01, 02, 03, ..., 11, 12.

Для каждого месяца есть каждый день: 01, 02, ..., столько дней, сколько в месяце.

Для каждого дня есть подкаталог, который всегда называется 0700. Итак, следуя предыдущему примеру, мы будем в /home/2010/01/01/0700.

И в такой директории есть файл с данными (табличной формы). Имя файла показывает его дату, например: /home/2010/01/01/0700/pnw_20100101_TG.geo.

Я хочу прочитать данные в этих файлах и загрузить их в кадр данных pandas, чтобы отфильтровать выбросы. Думаю, я знаю, как это сделать, так что давайте разберем это, но проблема в том, что я не могу читать файлы. Вот что я пробовал:

import os
for root, dirs, files in os.walk("/home"):
    for name in files:
        f = open(name, 'r')
        f.close

Но я получаю сообщение об ошибке, связанное с открытием файла: IOError: [Errno 2] No such file or directory: 'pnw_20100101_TG.geo'. Кажется, что он не распознает файл. Но если я сделаю, например, print(os.path.join(root, name)), он правильно перечислит все файлы.

Что вы предлагаете, чтобы иметь возможность открывать и читать файлы?

Спасибо.


person David    schedule 02.08.2016    source источник


Ответы (1)


Вы открываете файл с простым именем, но во вложенных папках он не будет найден. Соедините его с корнем:

import os
for root, dirs, files in os.walk("/home"):
    for name in files:
        f = open(os.path.join(root, name), 'r')
        f.close
person drodri    schedule 02.08.2016
comment
Также вы можете отфильтровать корневые папки, чтобы они соответствовали вашей спецификации даты, используя регулярные выражения. - person Gábor Fekete; 02.08.2016