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

У меня есть код Python выполняет некоторые операторы на некоторых файлах netCDF. У него есть имена файлов netCDF в виде списка. Я хочу вычислить среднее по ансамблю этих файлов netCDF с помощью оператора netCDF ncea (среднее по ансамблю netCDF). Однако для вызова NCO мне нужно передать все элементы списка в качестве аргументов следующим образом:

 filelist = [file1.ncf file2.ncf file3.ncf ........ file50.ncf]

ncea file1.ncf file2.ncf ......file49.ncf file50.ncf output.cdf

Любая идея, как этого можно достичь.

Любая помощь очень ценится.

2 ответа

import subprocess
import shlex
args = 'ncea file1.ncf file2.ncf ......file49.ncf file50.ncf output.cdf'
args = shlex.split(args)
p = subprocess.Popen(args,stdout=subprocess.PIPE)
print p.stdout # Print stdout if you need.

Я обычно делаю следующее:

Build a string containing the ncea command, then use the os module to execute the command inside a python script

import os

out_file = './output.nc'

ncea_str = 'ncea '
for file in filelist:
    ncea_str += file+' '

 os.system(ncea_str+'-O '+out_file)

РЕДАКТИРОВАТЬ:

import subprocess

outfile = './output.nc'
ncea_str = '{0} {1} -O {2}'.format('ncea', ' '.join(filelist), out_file)
subprocess.call(ncea_str, shell=True)
Другие вопросы по тегам