La idea es descargar un archivo comprimido de un sitio web y descomprimirlo con FME 2011. He adjuntado una captura de pantalla de FME workbench que no funciona.
Respuestas
¿Demasiados anuncios?Su código parece incorrecto. Inténtalo:
import pyfme, os, zipfile
z = zipfile.ZipFile("GoTransitDL.zip")
z.extractall()
Y sólo como advertencia (de los documentos de la API):
Advertencia Nunca extraiga archivos de fuentes no confiables sin una inspección previa. Es posible que se creen archivos fuera de la ruta, por ejemplo, miembros que tengan nombres de archivo absolutos que empiecen por "/" o nombres de archivo con dos puntos "..".
Se puede hacer que el archivo zip extraiga los archivos a cualquier lugar del disco duro, y z.extractall() lo hará. Muy peligroso si no se conoce la fuente.
Acabo de hacer exactamente lo mismo. Deberías revisar la documentación del PythonCaller . Debe crear una función o clase como se describe en la ayuda. Utilice una función para procesar una sola característica, como en este caso.
Ejemplo:
from zipfile import ZipFile
def fmeUnzip(fmeFeature):
zipFile = fmeFeature.getAttribute("_ZIPFILE_NAME")
outDir = fmeFeature.getAttribute("_OUTPUT_DIR")
unzip(zipFile, outDir)
def unzip(zipFile, outDir):
z = ZipFile(zipFile)
z.extractall(outDir)
En los parámetros de PythonCaller, establezca 'Symbol to use' como fmeUnzip
y copiar el código en el parámetro de código fuente. También puede guardarlo en un archivo .py, consulte la ayuda de PythonCaller para saber cómo hacerlo.
Nota: _ZIPFILE_NAME
y _OUTPUT_DIR
son atributos creados por ParameterFetcher transformadores, que crean atributos basados en los valores de los parámetros del espacio de trabajo.