Как зациклить в Python для создания файлов с именами в списке - PullRequest
1 голос
/ 05 июня 2019

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

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

classes = ['red', 'orange', 'yellow', 'green', 'blue', 'purple']

Это код, который у меня сейчас есть для каждого цвета:

folder = 'red'
file = 'red.txt'
mv red.txt data/colors

path = Path('data/colors')
dest = path/colors
dest.mkdir(parents=True, exist_ok=True)

download_images(path/file, dest, max_pics=200)

Я ожидаю, что для каждого цвета будет создана папка с соответствующими загруженными изображениями.

1 Ответ

1 голос
/ 05 июня 2019

Ваш список цветов находится в classes списке Python. У вас есть <color name>.txt файлы, содержащие URL-адреса изображений тех цветов, которые перечислены в списке classes. Итак, у вас есть начальная структура каталогов, которая выглядит следующим образом:

.
├── blue.txt
├── green.txt
├── orange.txt
├── purple.txt
├── red.txt
├── script.py
└── yellow.txt

Теперь вы хотите создать отдельные каталоги для каждого цвета. Итак, наконец, ваша структура каталогов должна выглядеть следующим образом:

.
├── data
│   └── colors
│       ├── blue
│       ├── blue.txt
│       ├── green
│       ├── green.txt
│       ├── orange
│       ├── orange.txt
│       ├── purple
│       ├── purple.txt
│       ├── red
│       ├── red.txt
│       ├── yellow
│       └── yellow.txt
└── script.py

Где ваш метод download_image() загрузит изображение для заданных URL-адресов в файл <color name>.txt, который он получает в качестве одного из аргументов. Он также получает место назначения каталога изображений, который нужно разместить, и максимальное количество изображений, которое он должен загрузить.

Если я правильно понял вашу проблему, следующий код решит вашу проблему. Код хорошо прокомментирован и не требует пояснений. Вы можете оставить комментарии, чтобы попросить больше разъяснений.

import os

base_path = "data/colors/"
# create base path directories if not already present
os.system("mkdir -p data")
os.system("mkdir -p data/colors")

classes = ['red', 'orange', 'yellow', 'green', 'blue', 'purple']

# dummy download image function
def download_image(path, dest, max_pics):
    print("URL file path: " + path)
    print("Image destination: " + dest)
    print("No of Images to be downloaded: " + str(max_pics))

if __name__ == "__main__":
    for colour in classes:
        # create directories for each colour if not already present
        os.system("mkdir -p " + base_path + colour)
        # move <colour_name>.txt file into base path
        os.system("mv " + colour+".txt " + base_path)
        dest = base_path + colour
        # call download_image method
        download_image(base_path+colour+".txt", dest, max_pics=200)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...