嗨,我有一个看起来只能在 2.x (2.7) 系统中工作的功能。但是我的程序的其余部分是用 python 3.4 编写的
文件a.py(2.7 版)是我可以在 2.7 中通过调用脚本来运行的脚本:
import psspy
openPath='busSystem.raw'
saveToPath='busSystem_out.raw'
#Open a case file
psspy.read(0,openPath)
do some calculation...
#Save to another case file
psspy.rawd_2(0,1,[1,1,1,0,0,0,0],0,saveToPath)
然后在b.py中从 python 3.4 调用以下代码即可
import os
os.system('c:\python27\python a.py')
但是后来我想将a.py中的脚本更改为带有 kwargs 的函数,例如:
def run(openPath='busSystem.raw',saveToPath='busSystem_out.raw')
#Open a case file
psspy.read(0,openPath)
do some calculation...
#Save to another case file
psspy.rawd_2(0,1,[1,1,1,0,0,0,0],0,saveToPath)
do something more...
所以我想做类似的事情
import os
in = 'busSystem.raw'
out = 'busSystem_out.raw'
os.system('c:\python27\python a.py run(in, out)')
# Or
os.system('c:\python27\python a.py run(openPath=in,saveToPath=out)')
所以问题是:
- 如何将参数发送到另一个脚本的函数?
- 我可以同时使用 args 和 kwargs 吗?
我知道我是否可以使用 python 3.4 运行脚本,我可以将函数导入为
from a import run
run(in,out)
我的解决方案是将整个 python 脚本作为字符串读取,使用 str.replace('busSystem.raw',in) 和 str.replace(''busSystem_out.raw',out) 并将其另存为a_new .py 并如前所述运行它。
a.py中的脚本需要在python 2.7版本,因为它与西门子PSS/E 33交互,它只通过py2.7进行通信。