2016-09-20 71 views
0

我想通过一系列.nc文件来运行一小段代码。下面的测试脚本打印在目录中的第一个文件名,但是当我使用ncfile = netCDF4.Dataset(fname, 'r')我得到的错误Python os.walk netCDF4不能一起工作

File "netCDF4\_netCDF4.pyx", 
line 1795, in netCDF4._netCDF4.Dataset.__init__ 
(netCDF4\_netCDF4.c:12278) 
    RuntimeError: No such file or directory 

这是一个不兼容的问题与os.walk和netCDF4或者是一个简单的错误,我在做什么?

import os 
import netCDF4 

for root, dirs, files in os.walk('E:\satellite .nc data\ENVISAT2006'): 
    for fname in files: 
     print fname # works up to here and without line below it prints all filenames 
     ncfile = netCDF4.Dataset(fname, 'r') 

回答

1

现在看来,这是需要在

ncfile = netCDF4.Dataset(fname, 'r')

的路径和目录的一个简单的问题,所以我有

ncfile = netCDF4.Dataset(os.path.join(fdir,fname), 'r')

取代它和外部的指定fdir循环。为了简单起见,我用os.listdir替换了os.walk,因为我不需要通过目录树。

import os 
import netCDF4 
import numpy as np 
from math import pi 
from numpy import cos, sin 

fdir = 'E:\satellite .nc data\ENVISAT2006' 
for fname in os.listdir('E:\satellite .nc data\ENVISAT2006'): 
#os.walk only needed if going through all of the files in a directory tree 
    #for fname in files: 
    print fname 
    ncfile = netCDF4.Dataset(os.path.join(fdir,fname), 'r')