我在目录/Desktop/jsons中有一组json文件,我有一个Scala脚本,它接收一个json并输出内容。我可以在终端中手动运行它,方法是将cding放到Scala脚本(/Me/dev/scalastuff)的目录中,然后运行
sbt --error "run /Desktop/jsons/jsonExample.json",
输出我在终端里想要的东西。
我想要编写一个Python脚本,它可以自动完成这一任务,另外,我还想用Scala脚本输出的“素材”输出一个json文件。
我现在的问题是使用子处理。当我试着跑
BASEDIR = '/Me/dev/scalastuff' p = subprocess.Popen(['sbt --error "run /Desktop/jsons/jsonExample.json"'], cwd = BASEDIR, stdout = subprocess.PIPE) out = p.stdout.read() print out
我得到了OSError: [Errno 2] No such file or directory。
我完全搞不懂为什么会发生这种事。我是新来的子过程,所以要对我轻一点!
发布于 2016-08-23 20:44:22
python中的popen接受一个shell参数列表。你只经过一个!
因此,它试图执行一个名为“完全'sbt --error "run /Me/Desktop/jsons/jsonExample.json"'”的文件。
很明显,这不管用。
如果您使用popen;只传递一个简单的数组--您不必关心转义:
subprocess.popen(['sbt', '--error', 'run /Me/Desktop/...'], cwd = BASEDIR, stdout = subprocess.PIPE)https://stackoverflow.com/questions/39110249
复制相似问题