NCO / pynco: ncea не может найти файлы из Python - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь запустить ncea из Python, чтобы получить среднемесячные значения из ежедневных файлов за много лет данных.

Команда:

ncea -v analysed_sst,sea_ice_fraction /mnt/r01/data/goes-poes_ghrsst/daily/200301*.nc 200301-gp-monthly.nc

отлично работает в терминале.

Но в Python я получаю следующую ошибку:

call(["ncea","-v","analysed_sst,sea_ice_fraction","/mnt/r01/data/goes-poes_ghrsst/daily/200301*.nc",monthly_file])
ncea: ERROR file /mnt/r01/data/goes-poes_ghrsst/daily/200301*.nc neither exists locally nor matches remote filename patterns

Я также пытался:

nco.ncea(input="/mnt/r01/data/goes-poes_ghrsst/daily/200301*.nc",output=monthly_file).variables['analysed_sst','sea_ice_fraction']

и получаю ту же ошибку.

Iне могу понять, если это проблема NCO или Python.

Я получаю ту же ошибку, когда использую только два файла, чтобы проверить, не связана ли проблема с подстановочным знаком.

Например:

input_string="/mnt/r01/data/goes-poes_ghrsst/daily/20030201000000-STAR-L4_GHRSST-SSTfnd-Geo_Polar_Blended_Night-GLOB-v02.0-fv01.0-0-360.nc /mnt/r01/data/goes-poes_ghrsst/daily/20030202000000-STAR-L4_GHRSST-SSTfnd-Geo_Polar_Blended_Night-GLOB-v02.0-fv01.0-0-360.nc"


call(["ncea","-v","analysed_sst,sea_ice_fraction",input_string,monthly_file])
ncea: ERROR file /mnt/r01/data/goes-poes_ghrsst/daily/20030201000000-STAR-L4_GHRSST-SSTfnd-Geo_Polar_Blended_Night-GLOB-v02.0-fv01.0-0-360.nc,/mnt/r01/data/goes-poes_ghrsst/daily/20030202000000-STAR-L4_GHRSST-SSTfnd-Geo_Polar_Blended_Night-GLOB-v02.0-fv01.0-0-360.nc neither exists locally nor matches remote filename patterns

Не могу понятькакой синтаксис должен быть.Я получаю ту же ошибку, если я делаю:

input_string="file1,file2"
input_string="file1 file2"
input_string="file1\ file2"

И если я попытаюсь вместо этого использовать список, например, что glob.glob вернет:

input_string=["file1","file2"]

Я получу:

TypeError: expected str, bytes or os.PathLike object, not list

Спасибо!

1 Ответ

0 голосов
/ 08 февраля 2019

Итак, найдя этот вопрос: Использование всех элементов списка в качестве аргумента системной команды (оператора netCDF) в коде Python

Я наконец-то понял:

input_string="/mnt/r01/data/goes-poes_ghrsst/daily/200301*.nc"
monthly_file="200301-gp-monthly.nc"
list1=['ncea','-v','analysed_sst,sea_ice_fraction']
list2=glob.glob(input_string)
command=list1+list2+[monthly_file]
subprocess.run(command)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...