1

私は、シェルスクリプト「js2coffee」を実行してjavascriptをcoffeescriptに変換するPythonスクリプトを作成しようとしています。

コマンドラインからこれを実行し、coffeescript を再び取得できます...

echo "var myNumber = 100;" | js2coffee

私がする必要があるのは、Python からこの同じパターンを使用することです。

Pythonでは、次のようになりました。

command = "echo '" + myJavscript + "' | js2coffee"
result = os.popen(command).read()

これは時々機能しますが、特殊文字 (ほとんどは引用符だと思います) がmyJavascript. これを行う標準的な方法が必要です。何か案は?ありがとう!

4

2 に答える 2

5

プロセスの入力ストリームを使用してデータをフィードします。これにより、シェルを回避でき、javascript をエスケープする必要がなくなります。さらに、シェル インジェクション攻撃に対して脆弱ではありません。

pr = subprocess.Popen(['js2coffee'], 
                      stdin=subprocess.PIPE,  
                      stdout=subprocess.PIPE)
result, stderrdata = pr.communicate('var myNumber = 100;')
于 2012-08-21T07:47:42.547 に答える
1

サブプロセス モジュールは行く方法です: http://docs.python.org/library/subprocess.html#frequently-used-arguments

以下の点にご注意ください。

args はすべての呼び出しに必要であり、文字列または一連のプログラム引数でなければなりません。一連の引数を提供することは、モジュールが必要な引数のエスケープと引用を処理できるため (たとえば、ファイル名にスペースを許可するため)、一般的に好まれます。

于 2012-08-21T07:00:27.383 に答える