【问题标题】:export files through a loop each in a new folder?通过循环将文件导出到新文件夹中?
【发布时间】:2018-08-27 11:24:19
【问题描述】:

为了让你明白。我有这个循环:

for i,v in zip(ps,db):
    print(i,v)

C:\Users\user\Desktop\sa\43001\PST\PST.shp C:\Users\user\Desktop\sa\43001\DBOUND\DBOUND.shp
C:\Users\user\Desktop\sa\43003\PST\PST.shp C:\Users\user\Desktop\sa\43003\DBOUND\DBOUND.shp

对于每次迭代中的每次导出,我希望根据所用文件目录中的编号将导出的文件放入一个新文件夹中。 示例:创建名为 43001 的文件夹,其中包含从 43001 目录中创建的文件 PST.shp。然后是一个名为43003 的文件夹,该文件夹具有对应的PST.shp

此代码接近预期,但需要修复才能创建这些文件夹。

for i, v in zip(ps,db):
    db1 = gpd.read_file(v)
    pst1 = gpd.read_file(i)
    wdp = gpd.sjoin(pst1, db1, how="left", op='within')
    o = r'C:\Users\user\Desktop\resultss'
    out = o +'\\'+i.split("\\")[-3] +'PST.shp'
    wdp.to_file(out)

这个问题:

此代码在resultss 文件夹中将文件创建为43001PST.shp43002PST.shp,而不是按照应有的方式创建以数字为名称且名称为PST.shp 的文件夹。应该改变什么?

想要的是:

resultss>>43001>>PST.shp
resultss>>43003>>PST.shp

【问题讨论】:

  • 你想知道如何创建目录吗?
  • os.mkdir(r'C:\Users\user\Desktop\resultss\' + i.split("\\")[-3])?

标签: python loops


【解决方案1】:

如果.to_file() 方法处理创建目录,试试这个:

out = o + '\\' + i.split("\\")[-3] + '\\PST.shp'

如果没有,首先通过在.to_file() 之前调用os.mkdir() 创建目录:

import os
os.mkdir(o + '\\' + i.split("\\")[-3])

【讨论】:

  • 我已经尝试过了,但不起作用给出 CPLE_AppDefinedError
  • 文件夹是否存在?如果没有,您可以尝试创建它吗?手动,或者在调用.to_file()之前添加os.mkdir(o + '\\' + i.split("\\")[-3])
  • 您的评论解决了这个问题。如果你想更新你的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 2021-01-22
相关资源
最近更新 更多