Есть ли конкретный метод для печати трех разных путей к файлам в CSV после итерации по папке?

Я все еще новичок в Python и стараюсь изо всех сил учиться. Я пытаюсь получить 3 разных пути к файлам, записанные в csv после итерации по папке. У меня проблема в том, что печатается только первый путь к файлу, который должен быть напечатан. Я надеюсь получить следующий вывод в формате csv:

      ['C:\\Users\\micha\\Documents\\USGS-NHD DATA\\NHDwaterbody.shp']
['C:\\Users\\micha\\Documents\\USGS-NHD DATA\\VietnamPA_name__Tam Dao.shp']
['C:\\Users\\micha\\Documents\\USGS-NHD DATA\\WBD_11.shp']

Но в итоге я получаю только одно это на выходе:

      C:\Users\micha\Documents\USGS-NHD DATA\VietnamPA_name__Tam Dao.shp

Это код, который я придумал в настоящее время. Я был бы признателен за любой вклад относительно того, как я могу получить все три элемента для печати в CSV, а не только один.

      import os
import csv
# assign directory
directory = 'C:\\Users\\micha\\Documents\\USGS-NHD DATA'
 
# iterate over files in
# that directory
for filename in os.listdir(directory):
    f = os.path.join(directory, filename)
    # checking if it is a file shp
    if f.endswith('.shp'):
        data= [f]
        n = open('C:\\Users\\micha\\Documents\\create.csv','w')
        writer = csv.writer(n)
        for item in data:
            writer.writerows([data])

1 ответ

Перед циклом создайте CSV-файл. если вы сделаете это внутри цикла, он будет перезаписан для каждого файла в каталоге:

      with open('C:\\Users\\micha\\Documents\\create.csv','w') as n:
    writer = csv.writer(n)
    for filename in os.listdir(directory):
        f = os.path.join(directory, filename)
        # checking if it is a file shp
        if f.endswith('.shp'):
            writer.writerow([f])
Другие вопросы по тегам