2013-02-18 78 views
-5

好吧,你可以看到我的问题我是一个Python的总newb。我建立一个python脚本,基本上我想它来执行这条线
在Python中启动一些东西

 

/Library/Frameworks/GDAL.framework/Programs/ogr2ogr -f "GeoJSON" output.json input.shp 
 

如何让Python来执行此,如果我在我的终端打字吗?
感谢

+0

为什么这个问题没有投票?堆栈溢出标准不够好吗? – climboid 2013-02-18 20:32:39

+0

我没有downvote,但我的猜测是,这是因为它是以前的堆栈溢出问题,如[这一个]的副本(http://stackoverflow.com/questions/450285/executing-command-line-programs-from- python),这可以很容易地找到(例如)谷歌搜索“启动命令行Python” – 2013-02-18 20:52:46

+0

嘿,感谢大卫 – climboid 2013-02-18 21:02:03

回答

5
import os 
os.system('/Library/Frameworks/GDAL.framework/Programs/ogr2ogr -f "GeoJSON" output.json input.shp') 

最近,建议使用subprocess包:

subprocess.call(['/Library/Frameworks/GDAL.framework/Programs/ogr2ogr', '-f', 
       '"GeoJSON"', 'output.json', 'input.shp']) 
+0

顺便说一句。 python是否等待执行完成或只是将进程分叉到os? – thomas 2013-02-18 19:48:10

+1

@tomasz:'os.system'等待它完成。如果你想分叉进程,使用[subprocess.Popen](http://docs.python.org/2/library/subprocess.html)。 – 2013-02-18 19:48:36

+0

谢谢大卫!我可以在9分钟内接受你的anser =) – climboid 2013-02-18 19:52:14

2

我不能发表评论,但想添加到上面的回答:
的子包允许用于确定命令是否成功执行的返回句柄。这可能在以后的脚本中很重要:

import subprocess 
COMMAND = '/Library/Frameworks/GDAL.framework/Programs/ogr2ogr -f "GeoJSON" output.json input.shp' 
return_code = subprocess.call(COMMAND, shell=True)