如何在不提供文件名的情况下执行python?

时间:2017-07-27 16:28:08

标签: python python-3.x ipython jupyter-notebook jupyter

我是python的新手,所以我想知道我是否可以调用python从交互式python shell外部读取一个字符串(或者它需要执行的代码),类似于exec()在Python中的工作方式。 基本上,我想知道是否有任何方法从命令行或其他方式获取python读取代码,而不是必须将该代码保存在'file.py'或其他类似文件中。 我想避免运行这个:python file.py因为我希望避免使用文件名。 我正在寻找解决方案并找到Execute python commands passed as strings in command line using python -cPython - How do I pass a string into subprocess.Popen (using the stdin argument)?。第一个答案似乎是我可能想要的,但我缺乏如何将字符串传递给stdin的知识部门,所以如果有人能够更好地解释该方法,如果它是正确的答案,我将不胜感激。第二个链接是我在查找stdin时发现的,看起来很有希望,但在执行时我意识到,根据我的理解,我仍然需要某种类型的子进程文件名。 我打算使用它来在Jupyter Notebook或任何类似的程序中使用,所以当我运行一个数据单元时,它能够在Python中执行或返回错误信息,但首先要做到这一点我必须找到如何在不需要文件名的情况下引用我想要的语言。感谢您的时间和考虑!

2 个答案:

答案 0 :(得分:0)

它有点不清楚你想要用什么,但这里是hello world命令行使用命令选项(-c)而不管道它。这只是运行传递的字符串就好像它在python中一样口译员或脚本。

python -c "print('hello world')"

如果你真的想从stdin运行代码,你可以使用这样的东西:

echo "for i in range(100):\n\tprint(i)" | python -c "import sys;print('hello world');exec(''.join([item for item in sys.stdin]))"

如何在手册页或python documentation中使用命令行工具。

答案 1 :(得分:0)

您可以使用以下内容:

python -c "my_var = 'my name is john';print(my_var)"

请注意

1)使用;你分开命令。

2)你需要使用" "在里面输入命令。