マスタースクリプトからpythonスクリプトを呼び出そうとしています。私は、マスターフレーム内から1つだけ生成されるデータフレームを必要とし、サブプロセス内で使用される引数としてサブプロセススクリプトに渡されます。pandasデータフレームをpythonサブプロセスに渡します。引数として開く。
次は、必要なPythonマスタースクリプトを作成しようとしています。
from subprocess import PIPE, Popen
import pandas as pd
test_dataframe = pd.read_excel(r'C:\test_location\file.xlsx',sheetname='Table')
sp = Popen(["python.exe",'C:/capture/test.py'], shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
sp.communicate(test_dataframe)
そして、ここでエラーです: TypeError: argument 1 must be convertible to a buffer, not DataFrame
これは私がまだそれで非常に良好ではないですので、subprocessモジュールを使用しようとしている私の最初の時間です。どんな助けでも大歓迎です。
こんにちはアレックス、返信ありがとうございます。私はpickleを使用しようとしましたが、マスタースクリプトを実行した後、エラーを出さずに終了し、サブプロセススクリプトからのコマンドはまったく実行されません。 –
本当に、そのサブプロセスは実行されていませんか?実行されるかもしれませんが、正常に終了したかどうかを確認しませんか?プロセスからの出力もチェックし、 '' 'sp.comminucate'''によって返されます。それ以外に '' 'shell = True''が何をしているかを確認してください。コマンドを配列として渡すだけでなく、 '' 'shell = True'''を指定します。 –
私のサブプロセスはprintコマンドで始まり、それが実行されているかどうかを見るためにraw_input()で終わります。ポップアップウィンドウはそれ自身で閉じる前に何も表示しません。私はシェルを使わずに試しましたが、どちらの方法でもサブプロセスから何も得られません。 stdin、stdout、stderrを使わずに実行しようとしましたが、サブプロセスからの最初のprintコマンドは実行されますが、pickle.loads(sys.stdin.read())では永遠にハングします。 –