2000张不同的图片分别放到2000个文件夹(已创建好的)中用python怎么实现啊。
可以使用Python的os模块和shutil模块来实现这个任务。
首先,你需要将所有的图片文件名存储到一个列表中。可以使用os模块的listdir()函数来获取指定目录下的所有文件名,然后使用列表推导式来筛选出所有的图片文件名。
import os
# 获取指定目录下的所有文件名
dir_path = "/path/to/directory"
file_names = os.listdir(dir_path)
# 筛选出所有的图片文件名
image_names = [f for f in file_names if f.endswith(".jpg") or f.endswith(".png")]
接下来,你需要遍历所有的图片文件名,并将它们移动到对应的文件夹中。可以使用shutil模块的move()函数来实现文件的移动操作。
import shutil
# 遍历所有的图片文件名,并将它们移动到对应的文件夹中
for image_name in image_names:
# 获取图片对应的文件夹路径
folder_name = image_name.split(".")[0]
folder_path = os.path.join(dir_path, folder_name)
# 如果文件夹不存在,则创建它
if not os.path.exists(folder_path):
os.mkdir(folder_path)
# 移动图片文件到对应的文件夹中
image_path = os.path.join(dir_path, image_name)
shutil.move(image_path, folder_path)
这样,所有的图片就会被移动到对应的文件夹中了。
这2000张图片和2000个文件夹放的规则是啥呢,比如图片文件夹的名是不是有对应关系的,如果有的话,可以循环这2000张图片,然后通过名字对应关系找到需要放的文件夹,然后直接用python的文件模块放进去就可以了, 比如:
import shutil
#这个规则可以根据具体情况生成
copy_rules = [
['/images/img1.png', '/target_dir/dir001'], # 图片路径, 需要存放的路径
['/images/img2.png', '/target_dir/dir002'], # 图片路径, 需要存放的路径
['/images/img3.png', '/target_dir/dir003'], # 图片路径, 需要存放的路径
]
for i in range(len(copy_rules)):
shutil.copy(copy_rules[i][0], copy_rules[i][1])
解决方案:
可以使用Python的shutil库来实现将图片文件分别存储到对应文件夹中的操作。具体步骤如下:
1.首先,需要将2000张图片的路径存储在一个列表中,可以使用os库的walk函数遍历图片所在的目录,并将路径存储到列表中。
import os pic_path_list = [] for root, dirs, filenames in os.walk('pictures_directory'): for filename in filenames: pic_path_list.append(os.path.join(root, filename))
2.然后,遍历图片路径列表,使用Python的随机数函数(如random.randint())来随机生成图片所在的目标文件夹编号,将图片移动到对应编号的文件夹中。
import shutil import random for pic_path in pic_path_list: dest_folder = str(random.randint(1, 2000)) if not os.path.exists(dest_folder): os.makedirs(dest_folder) shutil.move(pic_path, os.path.join(dest_folder, os.path.basename(pic_path)))
这样就可以将2000张不同的图片分别存储到对应的文件夹中了。需要注意的是,如果文件夹编号比较大(如上述例子中的2000),可能需要创建好几个层级的文件夹(如1/2/3/4/.../2000),以避免创建过多的扁平结构文件夹。
解决了,感谢大家的指点,代码如下