首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在spss-modeler中查找替换导入文件值

在spss-modeler中查找替换导入文件值
EN

Stack Overflow用户
提问于 2018-02-21 06:55:14
回答 1查看 126关注 0票数 0

我使用的是Modeler18.0,而且我是这个工具的新手。

我继承了30个流文件。每个流以30个excel源节点开始,文件名类似于.xlsx (例如c:\source\regl_sales_01_WI_2017Q3.xlsx)。我需要为源文件的2017Q4版本更新所有900个节点。

我是否可以使用某种类型的脚本来执行此操作,以便查找和替换?这会是一个独立的脚本吗?如果我只能识别脚本和节点,我似乎可以使用node.setPropertyValue("full_filename","c:\source\regl_sales_01_WI_2017Q3.xlsx")之类的东西。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-04-12 23:02:46

我认为您的问题可以通过使用独立脚本和stream.findAll()-functionality来解决。

你可以这样做:

代码语言:javascript
复制
from os import listdir
from os.path import isfile, join

session = modeler.script.session()
tasks = session.getTaskRunner()
mypath = 'C:\\yourpath'
streams = [f for f in listdir(mypath) if (isfile(join(mypath, f)) and f.endswith(".str"))]
for streamFile in streams:
    print(stream.getName()+" is getting processed.")
    stream = tasks.openStreamFromFile(demosDir + streamFile, True)
    inputNodes = stream.findAll("excelimport", None)
    for in in inputNodes:
        ff = in.getPropertyValue("full_filename")
        ff.replace("2017Q3.xlsx", "2017Q4.xlsx")
        in.setPropertyValue("full_filename", ff)
    print(stream.getName()+" is processed.")
    stream.close()

我没有测试它,但是它应该不需要太多的调整就能工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48895543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档