wsadmin 打印结果,每行一个字符
wsadmin printing results with a single character per line
我试图将某些 wsadmin 命令的输出用于其他命令,但是,当我遍历输出时,它似乎每行打印一个字符,这会破坏我的其他命令。我需要添加什么才能使其不每行打印一个字符。
cell_name = AdminControl.getCell()
# Get the DMGR Complete Object Name
dmgr_object_name = AdminControl.completeObjectName('WebSphere:name=DeploymentManager,type=DeploymentManager,mbeanIdentifier=DeploymentManager,*')
# Get the full Application Manager string.
appManager = AdminControl.queryNames('cell=' + cell_name + ',type=ApplicationManager,*')
for jvm in appManager :
print( jvm )
答案是导入 Java lineseparator
# get line separator
import java.lang.System as sys
lineSeparator = sys.getProperty('line.separator')
# Get the Cell Name
cell_name = AdminControl.getCell()
# Get the DMGR Complete Object Name
dmgr_object_name = AdminControl.completeObjectName('WebSphere:name=DeploymentManager,type=DeploymentManager,mbeanIdentifier=DeploymentManager,*')
# Get the full Application Manager string.
appManager = AdminControl.queryNames('cell=' + cell_name + ',type=ApplicationManager,*').split(lineSeparator)
这样就可以正确拆分结果。
添加一个补充@Pred 方法的答案,以及一些额外的解释。
澄清一下,查询 AdminControl.queryNames('cell=RandomCell1,type=ApplicationManager,*')
returns 一个 string
对象,如下所示:
'WebSphere:name=ApplicationManager,process=server1,platform=proxy,node=Node1,version=8.5.5.5,type=ApplicationManager,mbeanIdentifier=ApplicationManager,cell=RandomCell1,spec=1.0\nWebSphere:name=ApplicationManager,process=dmgr,platform=proxy,node=Dmgr,version=8.5.5.5,type=ApplicationManager,mbeanIdentifier=ApplicationManager,cell=RandomCell1,spec=1.0'
因此,使用 for
循环遍历上述字符串会依次打印每个字符。
在上面的字符串中,每个条目都由 \n
(换行符)字符分隔。因此,将字符串拆分为 \n
字符。
AdminControl.queryNames('cell=RandomCell1,type=ApplicationManager,*').split('\n')
这个returns一个字符串列表,每个字符串是一个条目对应一个对象。然后列表如下所示:
['WebSphere:name=ApplicationManager,process=server1,platform=proxy,node=Node1,version=8.5.5.5,type=ApplicationManager,mbeanIdentifier=ApplicationManager,cell=RandomCell1,spec=1.0', 'WebSphere:name=ApplicationManager,process=dmgr,platform=proxy,node=Dmgr,version=8.5.5.5,type=ApplicationManager,mbeanIdentifier=ApplicationManager,cell=RandomCell1,spec=1.0']
遍历列表 returns 每个条目作为一个完整的字符串。
我试图将某些 wsadmin 命令的输出用于其他命令,但是,当我遍历输出时,它似乎每行打印一个字符,这会破坏我的其他命令。我需要添加什么才能使其不每行打印一个字符。
cell_name = AdminControl.getCell()
# Get the DMGR Complete Object Name
dmgr_object_name = AdminControl.completeObjectName('WebSphere:name=DeploymentManager,type=DeploymentManager,mbeanIdentifier=DeploymentManager,*')
# Get the full Application Manager string.
appManager = AdminControl.queryNames('cell=' + cell_name + ',type=ApplicationManager,*')
for jvm in appManager :
print( jvm )
答案是导入 Java lineseparator
# get line separator
import java.lang.System as sys
lineSeparator = sys.getProperty('line.separator')
# Get the Cell Name
cell_name = AdminControl.getCell()
# Get the DMGR Complete Object Name
dmgr_object_name = AdminControl.completeObjectName('WebSphere:name=DeploymentManager,type=DeploymentManager,mbeanIdentifier=DeploymentManager,*')
# Get the full Application Manager string.
appManager = AdminControl.queryNames('cell=' + cell_name + ',type=ApplicationManager,*').split(lineSeparator)
这样就可以正确拆分结果。
添加一个补充@Pred 方法的答案,以及一些额外的解释。
澄清一下,查询 AdminControl.queryNames('cell=RandomCell1,type=ApplicationManager,*')
returns 一个 string
对象,如下所示:
'WebSphere:name=ApplicationManager,process=server1,platform=proxy,node=Node1,version=8.5.5.5,type=ApplicationManager,mbeanIdentifier=ApplicationManager,cell=RandomCell1,spec=1.0\nWebSphere:name=ApplicationManager,process=dmgr,platform=proxy,node=Dmgr,version=8.5.5.5,type=ApplicationManager,mbeanIdentifier=ApplicationManager,cell=RandomCell1,spec=1.0'
因此,使用 for
循环遍历上述字符串会依次打印每个字符。
在上面的字符串中,每个条目都由 \n
(换行符)字符分隔。因此,将字符串拆分为 \n
字符。
AdminControl.queryNames('cell=RandomCell1,type=ApplicationManager,*').split('\n')
这个returns一个字符串列表,每个字符串是一个条目对应一个对象。然后列表如下所示:
['WebSphere:name=ApplicationManager,process=server1,platform=proxy,node=Node1,version=8.5.5.5,type=ApplicationManager,mbeanIdentifier=ApplicationManager,cell=RandomCell1,spec=1.0', 'WebSphere:name=ApplicationManager,process=dmgr,platform=proxy,node=Dmgr,version=8.5.5.5,type=ApplicationManager,mbeanIdentifier=ApplicationManager,cell=RandomCell1,spec=1.0']
遍历列表 returns 每个条目作为一个完整的字符串。