проблема зацикливания xarray dataframe через подкаталоги - PullRequest
0 голосов
/ 04 декабря 2018

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

i) прочитать данные из всех файлов (с расширением .nc) в подкаталогах, ii) выбрать определенный фрагмент из них iii) сохранить их в файле output.nc.

import os
import xarray as xr
import numpy as np

rootdir ='/Users/sm/Desktop/along_track_J2'

data_new=[]

for subdir, dirs, files in os.walk(rootdir):

    for file in files:

        file_name= os.path.join(subdir, file)  

        df=xr.open_dataset(file_name)

        df['longitude'] = ((df.longitude + 180) % 360 - 180).sortby(df.longitude)

        ds=df.where((df.longitude>=-65) & (df.longitude<=-45) & (df.latitude>55), drop=True)

        data_new.append(ds)

Каким-то образом xarray не может прочитать файл, и я вижу следующую ошибку:

Файл "", строка 1, в runfile ('/ Users / sm / Desktop / jason2_processing.py', wdir = '/ Users / sm / Desktop')

Файл "/Users/sm/anaconda3/lib/python3.7/site-packages/spyder_kernels/customize/spydercustomize.py", строка 668, вrunfile execfile (имя файла, пространство имен)

Файл "/Users/sm/anaconda3/lib/python3.7/site-packages/spyder_kernels/customize/spydercustomize.py", строка 108, в execfile exec (compile (f.read (), имя файла, 'exec'), пространство имен)

Файл "/Users/sm/Desktop/jason2_processing.py", строка 18, в df = xr.open_dataset (имя_файла)

Файл "/Users/sm/anaconda3/lib/python3.7/site-packages/xarray/backends/api.py", строка 320, в open_dataset ** backend_kwargs)

Файл "/ Users/ см / anaconda3 / Библиотека / рython3.7 / site-packages / xarray / backends / netCDF4_.py ", строка 331, в открытом файле ds = opener ()

Файл" /Users/sm/anaconda3/lib/python3.7/site-packages / xarray / backends / netCDF4_.py ", строка 230, в _open_netcdf4_group ds = nc4.Dataset (имя файла, mode = mode, ** kwargs)

Файл" netCDF4 / _netCDF4.pyx ", строка 2123,в netCDF4._netCDF4.Dataset. init

Файл "netCDF4 / _netCDF4.pyx", строка 1743, в netCDF4._netCDF4._ensure_nc_success

Ошибка OSE: [Errno -51] NetCDF: неизвестный формат файла: b '/ Users / sm / Рабочий стол / вдоль_трака_J2 / .DS_Store'

Может кто-нибудь, пожалуйста, помогите мне с этим.Заранее спасибо.

1 Ответ

0 голосов
/ 04 декабря 2018

OSError: [Errno -51] NetCDF: неизвестный формат файла: b '/ Users / sm / Desktop / вдоль_track_J2 / .DS_Store'

В данный момент вы просматриваете все файлы,NetCDF и другие (системные) файлы..DS_store - это файл, созданный macOS, который не является файлом NetCDF.Если вы хотите обрабатывать только файлы NetCDF, должно сработать что-то вроде этого:

...
for file in files:
    if file.split('.')[-1] == 'nc':
        file_name= os.path.join(subdir, file) 
        df = xr.open_dataset(file_name)
        ....

if file.split('.')[-1] == 'nc': (единственное, что я добавил) в основном проверяет, имеет ли расширение файла .nc, и игнорирует другие файлы..

...