【发布时间】:2018-01-05 12:21:01
【问题描述】:
我知道已经有人问过一个非常相似的问题,但是由于there 发布的解决方案都没有解决我的问题,我尝试使其可复制:
所以我像这样调用this script to merge some shapefiles(一个文件夹中的所有文件):
shpfiles = 'shapefile_a.shp shapefile_b.shp'
subprocess.call(['python', 'shapemerger.py', '%s' % shpfiles])
我只从脚本中获得使用说明,所以我无法确定出了什么问题。如果我直接在终端中调用脚本,它就可以工作。 任何帮助表示赞赏。
【问题讨论】:
-
使用 subprocess.run ,如果您使用的是 python 3+ 或对 python 3 和 python2 使用 subprocess.Popen 。试试这个:
subprocess.Popen("python shapemerger.py {}".format(shpfiles), shell = True) -
将文件拆分为单独的名称
['python', 'shapemerger.py'] + shpfiles.split() -
@Stack 为什么
shell=True在这种情况下? -
您的形状文件作为唯一的参数传递,中间有空格。 VPfB 评论解决了它。使用参数列表,让子进程处理引用,你会没事的。
标签: python subprocess command-line-arguments