2017-10-01 5 views
0

私は検索していくつかの異なるコードを試しても答えが見つからないプロジェクトに対して何かしようとしています。linuxのコマンドラインでpythonを使って文字列をコンパイルする(実行していない)

私は何をしようとしているクライアントからの文字列を受信する(経由で送信され、このメソッドを、教師の注文を使用する必要があります)、PHPファイルでexec()を使用してこの文字列をコンパイルします。基本的に私は、文字列として私に送られたPythonコードスニペットを「格付け」しています。 Andrewのファイルシステムサーバー(afs)でもこれをやっています。

私はあまりPythonに慣れていません。他の言語を使用していますが、pythonをphp execで実行できるようにしています。また、cythonを使ってPythonをコンパイルすることもできます。私がこれを使うべきかどうか確かめてください)。私はこれをファイルで処理するようにしました。

私の問題は、単に文字列を実行せずに単純にコンパイルできないことです。私はちょうど「プリント( 『Hello Worldの』)は」

変数PHPの文字列になり、文字列を実行するための

python -c "print('Hello World')"を行うことができますが、私は単純に、構文エラーをチェックするかどうかはわかりません。

は私が python -m py_compile -c "print('Hello World')"を試みたが、それだけで基本的にすべての文字列のクライアントのために新しいの.pyファイルを作るの外

だから、ファイル、文字列を好きではないpy_compileに-mどのように見えるためにそれを好きではありません。私に送ると、それに取り組んで、新しいファイルを作成したり、これを処理する別のpythonスクリプトを作成することなく良い方法があります。私は1つのPHPファイルでこれをしようとしています。これは、Pythonのコマンドラインスクリプトを文字列でやっている大きなノーノかもしれません。

+0

よう

import sys import parser data = sys.argv[1] try: parser.suite(data) except SyntaxError as e: print(e) 

起動し、あなたが達成したいものだけで全体を書き換えること?別のセクションとして試したものを追加して、試してはいけないことを知ることができます。 – Harry

+0

なんらかの理由で質問を編集できません。基本的には、私がやろうとしているのは、Pythonコードで文字列引数をコンパイルするlinuxコマンドライン引数です。私は文字列に構文エラーやその欠如を見たいと思っています。だから 'python -m py_compile -c" Pythonコードの文字列 " – 5Ermacs

+0

ちょうど私が' python -c "を使う理由はないことに注意してください。構文エラー " – 5Ermacs

答えて

0

parser-Moduleを使用できます。このようなスクリプト書く:この

python3.6 /tmp/test.py "import math" 
+0

これは素晴らしいです、私はこれは私のPHPファイルではかなり簡単に動作するようになった。私は、これはclの奇妙な議論をして、スクリプトを使用しようとするより意味があると思う – 5Ermacs

関連する問題