2013-05-22 122 views
0

我试图自动化一些使用python和fortran一起绘图。 我非常接近它的工作,但我有问题从glob搜索中获取结果以供给我的python函数。从glob读取结果到python函数

我有一个的.py脚本说

import glob 
    run=glob.glob('JUN*.aijE*.nc') 

    from plot_check import plot_check 
    plot_check(run) 

但我收到此错误

plot_check(run) 
    Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "plot_check.py", line 7, in plot_check 
    ncfile=Dataset(run,'r') 
    File "netCDF4.pyx", line 1328, in netCDF4.Dataset.__init__ (netCDF4.c:6336) 
    RuntimeError: No such file or directory 

我检查了水珠正在做的工作,它是,但我认为这是我的变量“run”的格式正在让我感到困扰。

在蟒蛇:

>>run 
    >>['JUN3103.aijE01Ccek0kA.nc'] 
    >>type(run) 
    <type 'list'> 

所以我的水珠是找到我希望把我的函数的文件的文件名,但事情是不是很努力,当我尝试输入变量“运行”在我的函数“plot_check”中。

我认为这可能与我的变量“run”的格式有关,但我不太清楚如何解决它。

任何帮助将不胜感激!

回答

0

glob.glob返回所有匹配文件名的列表。如果你知道有总是将是只有一个文件,你可以抓住的第一个元素:

filenames = glob.glob('JUN*.aijE*.nc') 
plot_check(filenames[0]) 

或者,如果可能匹配多个文件,然后遍历结果:

filenames = glob.glob('JUN*.aijE*.nc') 
for filename in filenames: 
    plot_check(filename) 
+0

亚当,那很完美!就是我以后的事!非常感谢你的帮助! –

0

也许Dataset期望传递一个单一的字符串文件名,而不是一个元素的列表?

请尝试使用run[0]来代替(尽管您可能需要检查以确保您的glob实际上与您之前的文件匹配)。