我有一个颜色列表,带有一个txt文件,其中包含这些颜色的图像的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)
我希望每种颜色都有一个文件夹,其中包含各自下载的图像。
答案 0 :(得分:1)
您的颜色列表在classes
python列表中。您有<color name>.txt
个文件,其中包含classes
列表中列出的这些颜色的图像的URL。因此,您具有一个初始目录结构,看起来像下面的目录树:
.
├── 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()
方法将在<color name>.txt
文件中下载给定URL的图像,该图像作为参数之一接收。它还会接收要放置的图像目录的目的地以及应下载的最大图像数量。
如果我正确理解了您的问题,那么遵循以下代码可以解决您的问题。代码经过了很好的注释并且不言自明。您可以删除评论以要求更多说明。
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)