Выполнить код Python для нескольких файлов в каталоге и вывести несколько файлов в другой каталог

1

У меня есть код python, который принимает 2 входных файла из папки ввода, они являются шейп файлами, но формат не имеет отношения к вопросам. Я обрабатываю файлы, а затем выводю файл csv в папку "Вывод".

Чтобы визуализировать это, возможно, линия потока может объяснить, что я делаю.

Input/Lines/line1.shp + Input/Points/point1.shp >> Python Code >> Output/data1.csv

Я хотел бы иметь возможность перебирать код python по всем входным файлам во входных папках и хранить все выходные файлы. Итак, line1.shp + point1.shp = data1.csv и line2.shp + point2.shp = data2.csv и т. Д..

Любое руководство или помощь в том, как это сделать, было бы замечательно, код хорошо работает для любого ввода, но хотел бы иметь возможность делать это на большом количестве данных. Я новичок в python и не знаю, что искать.

Спасибо!

Теги:
python-3.x

2 ответа

0
Лучший ответ

Я думаю, что цикл for будет полезен следующим образом:

>>> import shapefile
>>> import csv
>>> file_point = 'Input/points/point%s.shp'
>>> file_line = 'Input/Lines/line%s.shp'
>>> file_output = 'Output/data%s.csv'
>>>
>>> number_of_file = 10 # your file size
>>>
>>> for file_index in range(1,number_of_file+1):
...     sf_p = shapefile.Reader(file_point%str(file_index))
...     sf_l = shapefile.Reader(file_line%str(file_index))
...
...     # do some things you want
...
...     with open(file_output%str(file_index), 'w') as csvfile:
...         # write(your data)

# example of file pathes in for loop
Input/points/point1.shp
Input/points/point2.shp
Input/points/point3.shp
Input/points/point4.shp
Input/points/point5.shp
Input/points/point6.shp
Input/points/point7.shp
....

И эти два сайта будут полезны для шейпинга и чтения/записи csv в python

https://pypi.org/project/pyshp/

https://docs.python.org/3/library/csv.html

0

Для начала я не уверен, что вам нужно делать с файлами, но похоже, что у вас есть это. Есть некоторые части модуля os, которые могут оказаться полезными. У меня есть функции, которые кажутся вам наиболее полезными в вашем случае.

# os module
import os

# get the current path where your program is executing
current_path = os.getcwd()
# or
current_path = 'my/file/path/to/files'

# lists all the files and directories in the current path
for item in os.listdir(current_path):

    # the file path for each item in current_path
    file_path = current_path+"\\"+item

    # make sure the path is not a directory
    if not os.path.isdir(file_path):

        # separate the file name and file extension
        file_name, file_extension = os.path.splitext(file_path)

        # make sure you are operating on .shp files 
        if file_extension == '.shp':
            # do you file processing here
            # also create you output files here 
            # if you want 1 output for every input file

Ещё вопросы

Сообщество Overcoder
Наверх
Меню