2017-07-27 71 views
-2

我对python比较陌生,所以我想知道是否可以调用python从交互式python外部读取字符串(或需要执行的代码),类似于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中执行或返回错误消息,但首先要做的是必须了解如何在不需要文件名的情况下引用我想要的语言。感谢您的时间和考虑!如何在不提供文件名的情况下执行python?

+0

您可以将代码传送到解释器中。 –

+0

@克劳斯D.你能详细说明一下吗?我已经尝试使用下列代码管道:'def exec_py(code): proc = subprocess.Popen([“python”,'f'],stdin = subprocess.PIPE,stdout = STDOUT,stderr = subprocess.PIPE,shell =假) 值return_code = proc.wait() proc.stdin.write( '代码') 出= proc.stdout.read() ERR = proc.stderr.read() 如果(ERR): 返回(err.decode(“utf-8”)) else: return(out.decode(“utf-8”))'通过在Jupyter中运行单个单元来给出代码,但它又需要一个文件命名为'f',我无法提供。 –

+0

只是...不提供文件名?运行'python'。 – user2357112

回答

0

它有点不清楚你想要用这个,但这里是你好世界使用命令行选项(-c)而不用管道输入它。这只是运行的字符串,就好像它是在python解释器或脚本中。

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

如果你真的想从标准,你可以使用这样的运行代码:

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使用命令行工具。使用

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

注意

1):

+0

我很感激帮助,但我一直在寻找可以提供多个字符串的答案。我发现在https://stackoverflow.com/questions/10768584/execute-python-commands-passed-as-strings-in-command-line-using-python-c中的方法,但作为第一个反应声明,它不能打印多于一个字符串。 'python -c“x ='hello',print(x)”'似乎不起作用。你知道如何传递python代码到标准输入,显然这是答案,但我不熟悉 –

+0

这将无法正常工作,但python -c“x ='hello'; print(x)”does –

0

您可以使用以下你分开命令。 2)你需要使用“”和里面输入命令。

相关问题