我试图通过遍历子目录来制作一个大数据框。我要:
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')
runfile中的文件“ /Users/sm/anaconda3/lib/python3.7/site-packages/spyder_kernels/customize/spydercustomize.py”,第668行 execfile(文件名,命名空间)
exec文件中的文件“ /Users/sm/anaconda3/lib/python3.7/site-packages/spyder_kernels/customize/spydercustomize.py”,第108行 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/sm/anaconda3/lib/python3.7/site-packages/xarray/backends/netCDF4_.py”,打开的第331行 ds = opener()
_open_netcdf4_group中的第230行,文件“ /Users/sm/anaconda3/lib/python3.7/site-packages/xarray/backends/netCDF4_.py” ds = nc4.Dataset(文件名,mode = mode,** kwargs)
netCDF4._netCDF4.Dataset中的文件“ netCDF4 / _netCDF4.pyx”,第2123行。初始
netCDF4._netCDF4._ensure_nc_success中的文件“ netCDF4 / _netCDF4.pyx”,行1743
OSError:[Errno -51] NetCDF:未知文件格式:b'/ Users / sm / Desktop / along_track_J2 / .DS_Store'
有人可以帮我吗?预先谢谢你。
答案 0 :(得分:0)
OSError:[Errno -51] NetCDF:未知文件格式:b'/ Users / sm / Desktop / along_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
,并忽略其他文件。