【发布时间】:2017-07-27 16:28:07
【问题描述】:
我对 python 比较陌生,所以我想知道是否可以调用 python 从交互式 python shell 外部读取字符串(或它需要执行的代码),类似于在 Python 中 exec() 的工作方式.
基本上,我想知道是否有任何方法可以让 python 从命令行或其他方式读取代码,而不必将该代码保存在“file.py”或其他类似文件中。
我想避免运行这个:python file.py,因为我希望避免需要文件名。
我四处寻找解决方案,发现Execute python commands passed as strings in command line using python -c 和Python - How do I pass a string into subprocess.Popen (using the stdin argument)?。第一个答案似乎是我想要的,但我缺乏如何将字符串传递到标准输入的知识部门,所以如果有人能更好地解释该方法,如果它是正确的答案,我将不胜感激。第二个链接是我在查找 stdin 时发现的,看起来很有希望,但在执行时我意识到,根据我的理解,我仍然需要某种文件名用于子进程。
我打算使用它以便在 Jupyter Notebook 或任何类似程序中使用,因此当我运行一个数据单元时,它可以在 Python 中执行或返回错误消息,但首先我必须找到了解如何在不需要文件名的情况下引用我想要的语言。感谢您的时间和考虑!
【问题讨论】:
-
您可以将代码通过管道传输到解释器中。
-
@Klaus D. 你能详细说明一下吗?我曾尝试使用以下代码进行管道传输:
def exec_py(code): proc = subprocess.Popen(["python", 'f'], stdin = subprocess.PIPE, stdout=STDOUT, stderr=subprocess.PIPE, shell=False) return_code = proc.wait() proc.stdin.write('code') out = proc.stdout.read() err = proc.stderr.read() if (err): return(err.decode("utf-8")) else: return(out.decode("utf-8"))其中代码将通过在 Jupyter 中运行单个单元格来给出,但它再次需要一个我无法提供的名为“f”的文件。 -
只是...不提供文件名?运行
python。
标签: python python-3.x ipython jupyter-notebook jupyter