こんにちは、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のスクリプトは、py2.7を介してのみ通信する Siemens PSS/E 33 と対話しているため、python バージョン 2.7 である必要があります。