在 Jupyter Notebook 中获取 shell 命令的输出

Aze*_*ila 5 python shell terminal command-line jupyter-notebook

如果我有一个包含以下脚本的 python 文件:

import pandas as pd

def csv():

    r = pd.DataFrame([[1,2,3,6],[1,3,4,5]])
    return r

csv()

Run Code Online (Sandbox Code Playgroud)

如何在 Jupyter Notebook 中使用 shell 命令来获取此脚本的输出(即 pandas DataFrame)。或者如何修改 python 脚本来执行此操作,但仍然在 Jupyter 中使用 shell 命令(出于某种原因,我需要一个 shell 命令,而不仅仅是从 python 文件导入函数并执行它)

到目前为止我尝试过以下内容,但没有成功(希望 Pandas DataFrame 作为输出)

import subprocess
result = subprocess.run(['python','MyPythonFile.py'], stdout=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)

或者

result = ! python MyPythonFile.py
Run Code Online (Sandbox Code Playgroud)

小智 3

访问结果的“stdout”参数:

import subprocess
result = subprocess.run(['python','MyPythonFile.py'], stdout=subprocess.PIPE)
print(result.stdout)
Run Code Online (Sandbox Code Playgroud)

编辑:您无法通过 unix stdout 传递 DataFrame。DataFrame 是一个 Python 对象,对操作系统没有任何意义。使用导入在另一个 python 脚本中执行代码,或通过 pickle 或类似工具导出生成的对象。如果你不完全改变你的策略,你想要实现的目标是不可能的。