0

我正在尝试为一个项目做一些事情,但在搜索并尝试了一些不同的代码后我找不到答案。

我要做的是从客户端接收一个字符串(通过post发送,我必须使用这种方法,老师的命令),然后在php文件中使用exec()编译这个字符串。基本上,我正在“分级”作为字符串发送给我的 python 代码片段。我也在 Andrew 文件系统服务器 (afs) 上执行此操作。

我对python不是很有经验,主要使用其他语言,但我可以用php exec制作一个python可执行文件,也可以用cython编译它(这是我们学校的linux机器有的,不知道我是否应该用这个)。我得到这个来处理文件。

我的问题是我不能简单地编译一个字符串而不运行它。我可以

python -c "print('Hello World')"用于执行字符串,其中“ print('Hello World') ”将是一个 php 字符串变量

但我不确定如何简单地检查语法错误。

我试过python -m py_compile -c "print('Hello World')"了,但它不喜欢 py_compile 上的 -m 不喜欢字符串,只喜欢文件

因此,除了基本上为客户端发送给我的每个字符串创建一个新的 .py 文件并进行处理之外,还有没有更好的方法,而无需创建新文件或制作单独的 python 脚本来处理这个问题。我正在尝试在一个 php 文件中执行此操作。这可能是在字符串上执行 python 命令行脚本的一个大问题,所以我不妨问一下。

4

1 回答 1

0

您可以使用解析器模块。写一个这样的脚本:

import sys
import parser


data = sys.argv[1]

try:
    parser.suite(data)
except SyntaxError as e:
    print(e)

像这样调用

python3.6 /tmp/test.py "import math"
于 2017-10-01T17:39:08.210 回答