“Python关闭最佳实践-全局变量+发布参数”的注释和答案 https://knowledge.亚搏在线safe.com/questions/2086/python-shutdown-best-practise-global-variables-pub.html “Python关闭最佳实践-全局变量+发布参数”问题的最新评论和答案 答案由helmoet https://knowledge.亚搏在线safe.com/answers/50751/view.html < p >你好,在这个问题上通过FME工作区关闭脚本运行时数据:这个,有点过时,但是适合我(FME 2015),可能无法在所有平台上工作,可能有点脏:< / p > < p >我使用一个创造者和PythonCaller执行以下脚本,该脚本创建一个环境变量:< / p > < p > < / p > < pre > FME导入fmeobjects导入操作系统导入:#模板函数接口:def FeatureProcessor(特性):操作系统。环境['A_VAR'] = '我的价值'打印操作系统。on['A_VAR'] pass

关闭python脚本只是引用了在PythonCaller脚本中创建的环境变量:

import os print 'THIS IS shutdown \n' print os。环境(“A_VAR”) < / pre > < p > < / p > < p >这是结果:< / p > < pre >。翻译成功,0个警告(0个特征)输出,FME会话持续时间:1.2秒。(CPU: 0.2s用户,0.5s系统)END - ProcessID: 5796,峰值进程内存使用量:60748 kB,当前进程内存使用量:60644 kB FME_END_PYTHON:从字符串计算python脚本……FME_END_PYTHON: python脚本执行完成。翻译成功,My value THIS IS SHUTDOWN My value 

基本上>也是一个global struct .

格林尼治时间2017年8月16日星期三14:02:23 helmoet
答案由geospatiallover https://knowledge.亚搏在线safe.com/answers/31671/view.html < p > < rel = "用户" href = " /用户/ 64 / cand亚搏在线aceatsafe。@CandaceAtSafe @ " nodeid="6亚搏在线4">@CandaceAtSafe,我收到了你的邮件和样本fmw,它对我很有效。谢谢! < / p > < p > < / p > < p > < / p > 格林威治时间2016年7月26日星期二19:52:59 geospatiallover 答案由CandaceAtSafe亚搏在线 https://knowledge.亚搏在线safe.com/answers/31668/view.html < p >你好< a href = " https://knowledg亚搏在线e.safe.com/questions/2086/python-shutdown-best-practise-global-variables-pub.html " > @geospatiallover < / >,请发布数据集的值作为参数的FeatureWriter然后关闭访问这个参数在python脚本使用类似:SourceDataset = FME_MacroValues (“URL”)——“URL”是参数名发表。< / p > 格林尼治时间2016年7月26日星期二19:08:37 CandaceAt亚搏在线Safe 地理空间专家对地理空间专家的回答的评论 https://knowledge.亚搏在线safe.com/comments/31653/view.html

谢谢,我测试了你的FMW,它像建议的那样工作。< / p > 2016年7月26日星期二13:29 - 33 GMT geospatiallover david_r评论david_r的回答 https://knowledge.亚搏在线safe.com/comments/31641/view.html

你能给我们看看你的关机脚本吗 2016年7月26日星期二08:24:28 GMT david_r 答案由mark_1spatial https://knowledge.亚搏在线safe.com/answers/31637/view.html < p > < rel = "用户" href = " /用户/ 521 / geospatiallover。html”nodeid = " 521 " > @geospatiallover < / > < / p > < p >这适合我:< / p > < pre >进口fmeobjects进口webbrowser #模板函数接口:def弹出(特性):MyFile = feature.getAttribute (_dataset)打印MyFile新= 2 #打开一个新标签,如果可能的话#自己打开一个html文件(Windows)计算机url = MyFile webbrowser.open (url,新= new) < / pre > < p >它运行在一个测试工作区:< / p > < p > < id = " 4026 " href = " /存储/附件/ 4026 - htmlbrowserpopup.fmw”> htmlbrowserpopup.fmw < / > < / p > 格林尼治时间2016年7月26日星期二07:47:01 mark_1spatial 答案由geospatiallover https://knowledge.亚搏在线safe.com/answers/31467/view.html < p > < rel = "用户" href = " /用户/ 2743 /肯。html" nodeid="2743">@ken和 你有什么建议吗?谢谢! < / p > < p > < / p > 2016年7月21日星期四格林尼治时间16:20:13 geospatiallover 答案由geospatiallover https://knowledge.亚搏在线safe.com/answers/31466/view.html

我需要一些建议如何实现数据集格式参数在我的关机脚本。我当前的关机脚本有一个硬编码的html路径/文件名,我想使用FeatureWriter数据集参数作为我的关机脚本的url。< / p >

import fme import fmeobjects import webbrowser new = 2 # open in a new tab, if possible # open an HTML file on my own (Windows) computer url = "file://///H:/2016/DGN_Conversions/Solution/output/HelloWorld.html" webbrowser.open(url,new=new) 

I added a pythonCaller after my featureWriter with the script below

print MyFile outputs
\\alxapfs23\RSALVALE$\2016\DGN_Conversions\Solution\output\HelloWorld.html

import fme import fmeobjects # Template Function interface: # When using this function, make sure its name is set as the value of # the 'Class or Function to Process Features' transformer parameter def processFeature(feature): global MyFile MyFile = feature.getAttribute('_dataset') print MyFile pass
I get this error message from FME:

FME_END_PYTHON: evaluating python script from string... 2016-07-21 10:57:03| 1.3| 0.0|INFORM|END - ProcessID: 13812, peak process memory usage: 70520 kB, current process memory usage: 70416 kB Python Exception <TypeError>: unsupported operand type(s) for &: 'str' and 'str' Traceback (most recent call last): File "<string>", line 12, in <module> TypeError: unsupported operand type(s) for &: 'str' and 'str' Error executing string
格林尼治时间2016年7月21日星期四16:13:47 geospatiallover
肯发表评论 https://knowledge.亚搏在线safe.com/comments/13635/view.html 显然,我在上面发布的工作空间链接是坏的。下面的代码可用于使属性值在关闭脚本中可访问。(注意:您可以使用相同的方法使一个参数值可通过使用ParameterFetcher转换器首先将您的parmater值转换为一个属性值)

假设您有一个属性名为_count

1。python调用者转换器
  • 设置参数“类或函数”;到processFeature
  • >然后输入这个脚本
import fmeobjects

def processFeature(feature):
global MyCounter
0 MyCounter = feature.getAttribute('_count')
1 pass
2
3 2。在您的Shutodown脚本中

import fmeobjects
MyCounter = str(MyCounter)
print MyCounter

2014年11月13日星期四07:53:45 GMT
隆发表评论 https://knowledge.亚搏在线safe.com/comments/7505/view.html 你好,肯,谢谢你的补充。如果更严格地说,当满足以下条件时,可以肯定在启动脚本中声明全局变量不是必需的。-变量的默认值是不必要的。-它保证在运行工作空间时,声明全局变量的函数至少被调用一次。 2012年12月15日星期六04:25:06 GMT kenatsafeold发表评论亚搏在线 https://knowledge.亚搏在线safe.com/comments/7862/view.html takashi&#的方法是一种很好的方法,但实际上您不需要在启动脚本中声明该变量。下面是一个工作空间示例,我们使用PythonCaller设置count属性,并在一个关闭脚本中获得它:
https://dl.dropbox.com/u/2377887/GetCounter.fmw
2012年12月14日星期五14:58:50 GMT kenat亚搏在线safeold
隆发表评论 https://knowledge.亚搏在线safe.com/comments/7802/view.html 你好,PythonCaller可能有空。声明一个全局变量并设置默认值myParam = '函数def modifyMyParam(特性)中的# PythonCaller #修改值:global myParam myParam = 'modified value'引用全局变量print myParam 2012年12月14日星期五09:14:07 GMT