2
我正在嘗試從主腳本調用python腳本。我需要從主腳本中僅生成一個數據框,然後將其傳遞給子流程腳本作爲在子流程內部使用的參數。將熊貓數據框傳遞給python子進程.Popen作爲參數
以下是我在編寫所需的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
這是我第一次嘗試,所以我在這又不是很好用的子模塊。任何幫助都感激不盡。
嗨亞歷克斯,謝謝你的答覆。我嘗試使用pickle,但是在通過主腳本之後,它會自行關閉而不會發出任何錯誤,並且根本沒有來自subprocess腳本的命令。 –
你確定,該子程序沒有執行?可能會被執行,但你不檢查它是否成功完成?同時檢查進程的輸出,它由'''sp.comminucate'''返回。除此之外,請檢查一下'''shell = True''的功能。您將命令作爲數組傳遞,但也指定'''shell = True'''。 –
我的子過程以打印命令開始,並以raw_input()結束,以便我看它是否運行,彈出窗口在自己關閉之前不顯示任何內容。我嘗試過使用和不使用shell,我沒有從子進程獲取任何東西。我試圖運行沒有標準輸入,標準輸出和標準錯誤,只有然後從子進程的第一個打印命令運行,但永遠掛在pickle.loads(sys.stdin.read())。 –