2013-05-22 4 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 

я проверил, что Glob делает свою работу, и это, но я думаю, что это формат моей переменной «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 фактически соответствовал файлу, прежде чем вы это сделаете).

Смежные вопросы