我正在编写一个python脚本,通过Aspen Plus的COM函数自动执行一些模拟。但是,当我想要获得分子量的值时,我必须写这样的代码:
import os
import win32com.client as win32
aspen = win32.Dispatch('Apwn.Document')
aspen.InitFromArchive2(os.path.abspath('Aspen\\Flash.bkp'))
MW = aspen.Tree.Data.Properties.Parameters.Pure Components.REVIEW-1.Input.VALUE.MW ACID.Value但由于连字符不能用作标识符,它在REVIEW-1中启动了一个语法错误。我怎么能那样使用它们呢?
编辑:
我将点同步替换为Aspen COM的FindNode函数,如下所示:
MW = aspen.Tree.FindNode("\\Data\\Properties\\Parameters\\Pure Components\\REVIEW-1")但是我仍然得到一个None对象,但是如下所示:
MW = aspen.Tree.FindNode("\\Data\\Properties\\Parameters\\Pure Components")工作,得到"COMObject FindNode“,所以我认为问题也在连字符中。
提前感谢!
发布于 2018-09-21 20:01:48
谢谢你告诉我
对于包含连字符的情况,应执行以下操作,而不是转义"\“字符:
MW = aspen.Tree.FindNode(r'\Data\Properties\Parameters\Pure Components\REVIEW-1\Input\VALUE')发布于 2018-07-31 16:33:13
好吧,我试图在Python中解决这个问题,但在Aspen中重命名节点会更容易解决。我也注意到,空格有时也会带来问题,所以也应该重新命名。在某些情况下,它不能做,或者我不知道怎么做,例如:
MW = aspen.Tree.FindNode("\\Data\\Properties\\Parameters\\Pure Components\\REVIEW1\\Input\\VALUE\\MW ACID")它返回一个None对象,我不知道如何将其重命名为"MW ACID",但有一种获取值的巧妙方法:
MW = aspen.Tree.FindNode("\\Data\\Properties\\Parameters\\Pure Components\\REVIEW1\\Input\\VALUE")
for o in MW.Elements:
if o.Name == "MW ACID":
MW_acid = o.Value现在它对我来说是有效的,但是由于迭代的原因,它会变得更慢。因此,如果有人知道如何在不重命名的情况下用Python解决这个问题,这仍然是有帮助的。我尝试使用unicode和字节表示法来表示非中断连字符,但也不起作用。
致以问候!
https://stackoverflow.com/questions/51589733
复制相似问题