导出时替换URL的一部分?

时间:2018-09-04 08:53:54

标签: python loops arcpy

我有一个名为shapelist的列表,其中包含:

shapelist

['C:\\Users\\user\\Desktop\\pl\\v1\\ASTN\\ASTN.shp',
'C:\\Users\\user\\Desktop\\pl\\v2\\ASTN\\ASTN.shp']

,我想通过维护列表内容目录的一部分来替换目录的最后一部分。示例:

在此循环中:

for i in shapelist:
    arcpy.FeatureToLine_management([i],i.replace('\\ASTN\\ASTN.shp','\\exported\\ASTN_li'))
  

给出错误:000210说明无法创建输出。   可能的原因包括数据锁定,路径错误和限制   访问权限。

如果我这样做,它仍然可以工作。

arcpy.FeatureToLine_management([i],i.replace('ASTN.shp','ASTN_li'))

此问题是将其保存到不需要的位置。

您知道如何像第一次尝试那样保存它,或以其他方式将其保存到该特定位置吗?

2 个答案:

答案 0 :(得分:0)

根据我的建议,您应该先创建文件夹'C:\\Users\\user\\Desktop\\pl\\v2\\exported',然后再进行arcpy.FeatureToLine_management(),例如

if not os.path.exists('C:\\Users\\user\\Desktop\\pl\\v2\\exported'):
    os.makedirs('C:\\Users\\user\\Desktop\\pl\\v2\\exported')
for i in shapelist:
    arcpy.FeatureToLine_management([i],i.replace('\\ASTN\\ASTN.shp','\\exported\\ASTN_li'))

答案 1 :(得分:0)

这适用于列表中的每个项目,因为它每次迭代都会更改,从而适用于给定的情况。

rootfolder = r'C:\\Users\\user\\Desktop\\pl'
for i in shapelist:
...     os.mkdir(rootfolder+'\\'+i.split("\\")[-3]+ '\\'+ 'exported')
...     out = rootfolder + '\\'+i.split("\\")[-3] +'\\'+'exported'+'\\ASTN_li'
...     arcpy.FeatureToLine_management([i] ,out)