如何在Python中将转义字符串传递给shell脚本

Mat*_*ham 1 python

我正在尝试创建一个Python脚本,然后运行shell脚本"js2coffee"将一些javascript转换为coffeescript.

从命令行我可以运行它,并再次获得coffeescript ...

echo "var myNumber = 100;" | js2coffee

我需要做的是使用Python中的相同模式.

在Python中,我来到这样的事情:

command = "echo '" + myJavscript + "' | js2coffee"
result = os.popen(command).read()
Run Code Online (Sandbox Code Playgroud)

这有时会起作用,但是有些问题与特殊字符(我认为大多数是引号)没有被正确转义myJavascript.必须有一种标准的方法来做到这一点.有任何想法吗?谢谢!

Rol*_*ith 5

使用进程的输入流来为其提供数据,这样就可以避免使用shell,而无需转义javascript.此外,您不容易遭受shell注入攻击;

pr = subprocess.Popen(['js2coffee'], 
                      stdin=subprocess.PIPE,  
                      stdout=subprocess.PIPE)
result, stderrdata = pr.communicate('var myNumber = 100;')
Run Code Online (Sandbox Code Playgroud)