gpt4 book ai didi

python - 将 pandas 数据帧作为参数传递给 python subprocess.Popen

转载 作者:太空狗 更新时间:2023-10-30 02:39:04 26 4
gpt4 key购买 nike

我正在尝试从主脚本调用 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:参数 1 必须可转换为缓冲区,而不是 DataFrame

这是我第一次尝试使用 subprocess 模块,所以我还不是很擅长。任何帮助将不胜感激。

最佳答案

这是 Python 3.6 主脚本和子进程之间双向通信的完整示例。

ma​​ster.py

import pandas as pd
import pickle
import subprocess

df = pd.read_excel(r'C:\test_location\file.xlsx',sheetname='Table')

result = subprocess.run(['python', 'call_model.py'], input=pickle.dumps(df), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
returned_df = pickle.loads(result.stdout)
assert df == returned_df

如果有问题,可以查看result.stderr

子程序.py

import pickle
import sys

data = pickle.loads(sys.stdin.buffer.read())
sys.stdout.buffer.write(pickle.dumps(data))

关于python - 将 pandas 数据帧作为参数传递给 python subprocess.Popen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45490602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com