/ / Utilisation de tous les éléments d'une liste en tant qu'argument d'une commande système (opérateur NetCDF) dans un code python - python, netcdf, nco

Utilisation de tous les éléments d'une liste en tant qu'argument d'une commande système (opérateur netCDF) dans un code python - python, netcdf, nco

Je "ai un code python effectue un opérateur sur certainsfichiers netCDF. Il a les noms des fichiers netCDF sous forme de liste. Je veux calculer la moyenne d'ensemble de ces fichiers netCDF en utilisant l'opérateur netCDF ncea (la moyenne d'ensemble netCDF). Cependant, pour appeler NCO, je dois passer tous les éléments de la liste sous forme d'arguments comme suit:

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

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

Toute idée de comment cela peut être réalisé.

Toute aide est grandement appréciée.

Réponses:

1 pour la réponse № 1
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.

-1 pour la réponse № 2

Je fais habituellement ce qui suit:

Construisez une chaîne contenant la commande ncea, puis utilisez la commande os module pour exécuter la commande dans un script python

import os

out_file = "./output.nc"

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

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

MODIFIER:

import subprocess

outfile = "./output.nc"
ncea_str = "{0} {1} -O {2}".format("ncea", " ".join(filelist), out_file)
subprocess.call(ncea_str, shell=True)