2013-05-22 50 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實際上與您之前的文件匹配)。