将结果从glob读入python函数

时间:2013-05-22 04:37:37

标签: python glob

我正在尝试使用python和fortran一起自动化一些绘图。 我非常接近它的工作,但是我遇到了从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

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

在python中:

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

所以我的glob找到了我要放入函数的文件的文件名,但当我尝试将变量“run”输入到我的函数“plot_check”时,某些东西不能正常工作。

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

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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)