gpt4 book ai didi

php - 在linux命令行上使用python(未运行)编译字符串

转载 作者:太空宇宙 更新时间:2023-11-04 12:19:09 25 4
gpt4 key购买 nike

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

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

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

我的问题是我不能在不运行字符串的情况下简单地编译它。我能行

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

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

我试过 python -m py_compile -c "p​​rint('Hello World')"但它不喜欢那样,因为 py_compile 上的 -m 不喜欢字符串,只文件

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

最佳答案

您可以使用解析器模块。编写如下脚本:

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"

关于php - 在linux命令行上使用python(未运行)编译字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46514761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com