我正在尝试创建一个 Python 脚本,该脚本依次运行 shell 脚本“js2coffee”以将一些 javascript 转换为 coffeescript。
我可以从命令行运行它,然后再次获取 coffeescript...
echo "var myNumber = 100;"| js2咖啡
我需要做的是使用来自 Python 的相同模式。
在 Python 中,我遇到了这样的事情:
command = "echo '" + myJavscript + "' | js2coffee"
result = os.popen(command).read()
这有时有效,但存在与特殊字符(我认为主要是引号)相关的问题,未在 myJavascript 中正确转义。必须有一个标准的方法来做到这一点。有任何想法吗?谢谢!
请您参考如下方法:
使用进程的输入流为其提供数据,这样您就可以避免 shell,也不需要转义您的 javascript。此外,您不易受到 shell injection 的攻击攻击;
pr = subprocess.Popen(['js2coffee'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
result, stderrdata = pr.communicate('var myNumber = 100;')
