2013-02-18 75 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)