игнорировать отсутствующие файлы в l oop - данные не отображаются - PullRequest
0 голосов
/ 28 марта 2020

У меня есть тысячи файлов, так как вы можете видеть диапазон годов ниже. Некоторые даты файлов отсутствуют, поэтому я хочу пропустить их. Но когда я попробовал метод ниже и вызвал data_in, переменная не существует. Любая помощь будет по достоинству оценена. Я новичок в python. Спасибо.

path = r'file path here' 
DataYears = ['2012','2013','2014', '2015','2016','2017','2018','2019', '2020']
Years = np.float64(DataYears)
NumOfYr = Years.size
DataMonths = ['01','02','03','04','05','06','07','08','09','10','11','12']
daysofmonth=[31,28,31,30,31,30,31,31,30,31,30,31]
for yy in range(NumOfYr):
    for mm in range (12):
        try:
            data_in = pd.read_csv(path+DataYears[yy]+DataMonths[mm]+'/*.dat', skiprows=4, header=None, engine='python')
            print('Reached data_in') # EDIT
            a=data_in[0] #EDIT
        except IOError:
            pass
            #print("File not accessible")

РЕДАКТИРОВАТЬ: ошибка добавлена ​​

Traceback (most recent call last):

  File "Directory/Documents/test.py", line 23, in <module>
    data_in = pd.read_csv(path+'.'+DataYears[yy]+DataMonths[mm]+'/*.cod', skiprows=4, header=None, engine='python')

  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 676, in parser_f
    return _read(filepath_or_buffer, kwds)

  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 448, in _read
    parser = TextFileReader(fp_or_buf, **kwds)

  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 880, in __init__
    self._make_engine(self.engine)

  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 1126, in _make_engine
    self._engine = klass(self.f, **self.options)

  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py", line 2269, in __init__
    memory_map=self.memory_map,

  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/io/common.py", line 431, in get_handle
    f = open(path_or_buf, mode, errors="replace", newline="")

FileNotFoundError: [Errno 2] No such file or directory: 'Directory/Documents/201201/*.dat'

1 Ответ

0 голосов
/ 28 марта 2020

Вы можете адаптировать код ниже, чтобы получить список ваших папок с датами:

import glob

# Gives you a list of your folders with the different dates
folder_names = glob.glob("Directory/Documents/")
print(folder_names)

Затем со списком папок вы можете перебирать их содержимое. Если вы просто хотите, чтобы список всех .dat файлов мог сделать что-то вроде:

import glob

# Gives you a list of your folders with the different dates
file_names = glob.glob("Directory/Documents/*/*.dat")
print(file_names)

Приведенный выше код ищет содержимое ваших каталогов, поэтому вы можете обойти свою проблему с отсутствующими датами. print s есть, чтобы вы могли видеть результаты glob.glob().

...