экспортировать файлы через цикл каждый в новую папку? - PullRequest
0 голосов
/ 27 августа 2018

Чтобы вы поняли. У меня есть этот цикл:

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, в которой будут созданы файлы PST.shp из каталога 43001. Затем папка с именем 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)

Проблема с этим:

Этот код создает файлы как 43001PST.shp и 43002PST.shp в папке resultss вместо создания папок с номерами в виде имен с PST.shp в них, как и должно быть. Что должно быть изменено?

Требуется:

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

1 Ответ

0 голосов
/ 27 августа 2018

Если метод .to_file() обрабатывает создание каталогов, попробуйте следующее:

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

Если этого не произойдет, сначала создайте каталог, вызвав os.mkdir() перед .to_file():

import os
os.mkdir(o + '\\' + i.split("\\")[-3])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...