0

我正在尝试同时使用 python 和 fortran 自动化一些绘图。我非常接近让它工作,但我在从全局搜索中获取结果以输入我的 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

我检查了 glob 是否正在完成它的工作,但我认为这是我的变量“run”的格式让我搞砸了。

在蟒蛇中:

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

因此,我的 glob 正在查找要放入函数中的文件的文件名,但是当我尝试将变量“run”输入到函数“plot_check”中时,有些东西并不能正常工作。

我认为这可能与我的变量“run”的格式有关,但我不太确定如何修复它。

任何帮助将不胜感激!

4

2 回答 2

0

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

尝试run[0]改用(尽管您可能想在执行此操作之前检查以确保您的 glob 实际匹配文件)。

于 2013-05-22T04:46:55.373 回答
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)
于 2013-05-22T04:48:56.570 回答