用python遍历一个文件里的所有图片并且根据图片的大小进行分类,创建新的文件夹分到不同的文件夹里,用代码写,可以运行给我看一下
时间: 2023-09-23 16:06:40 浏览: 80
### 回答1:
你好,这是一个技术问题,我可以回答。以下是用 Python 遍历文件夹中的所有图片并根据大小分类的代码示例:
```python
import os
import shutil
# 定义图片大小的分类阈值
small_size = 1024 * 1024 # 1MB
medium_size = 10 * small_size # 10MB
# 遍历文件夹中的所有文件
for root, dirs, files in os.walk('path/to/folder'):
for file in files:
# 判断文件是否为图片
if file.endswith('.jpg') or file.endswith('.jpeg') or file.endswith('.png'):
# 获取文件路径和大小
file_path = os.path.join(root, file)
file_size = os.path.getsize(file_path)
# 根据文件大小分类并移动到不同的文件夹
if file_size < small_size:
shutil.move(file_path, 'path/to/small_folder')
elif file_size < medium_size:
shutil.move(file_path, 'path/to/medium_folder')
else:
shutil.move(file_path, 'path/to/large_folder')
```
请注意,这只是一个示例代码,你需要根据实际情况修改文件夹路径和分类阈值。
### 回答2:
下面是使用Python代码实现遍历文件中所有图片并根据大小分类的示例:
```python
import os
import shutil
from PIL import Image
# 定义原始图片文件夹路径
image_folder = './images'
# 定义分类后的图片文件夹路径
output_folder = './output'
# 创建输出文件夹(如果不存在)
os.makedirs(output_folder, exist_ok=True)
# 遍历图片文件夹中的所有文件
for file_name in os.listdir(image_folder):
if file_name.endswith('.jpg') or file_name.endswith('.png'):
file_path = os.path.join(image_folder, file_name)
# 使用Pillow打开图片
image = Image.open(file_path)
# 获取图片宽度和高度
width, height = image.size
# 根据图片大小分类
if width > 1000 and height > 1000:
category_folder = os.path.join(output_folder, 'large')
elif width > 500 and height > 500:
category_folder = os.path.join(output_folder, 'medium')
else:
category_folder = os.path.join(output_folder, 'small')
# 创建分类文件夹(如果不存在)
os.makedirs(category_folder, exist_ok=True)
# 移动图片到对应的分类文件夹
shutil.move(file_path, os.path.join(category_folder, file_name))
print('分类完成')
```
请确保已经安装了`Pillow`库,可以使用`pip install pillow`进行安装。
上述代码将会遍历指定的`image_folder`文件夹中所有`jpg`和`png`格式的图片,并根据图片的大小将其移动到对应的分类文件夹中('large'、'medium'和'small'文件夹)。分类完成后,在执行代码的同一目录下会生成一个名为`output`的文件夹,其中包含了分类后的图片。
### 回答3:
import os
from PIL import Image
def classify_images(folder_path):
# 检查原始文件夹是否存在
if not os.path.exists(folder_path):
print("文件夹不存在")
return
# 创建分类后的文件夹
small_folder = os.path.join(folder_path, "小图")
medium_folder = os.path.join(folder_path, "中图")
large_folder = os.path.join(folder_path, "大图")
for path in [small_folder, medium_folder, large_folder]:
if not os.path.exists(path):
os.makedirs(path)
# 遍历文件夹中的所有图片
for filename in os.listdir(folder_path):
if not filename.endswith('.jpg') and not filename.endswith('.png'):
continue
image_path = os.path.join(folder_path, filename)
# 打开图片并获取大小
image = Image.open(image_path)
width, height = image.size
# 根据图片大小分类
if width < 500 or height < 500:
destination_folder = small_folder
elif width < 1000 or height < 1000:
destination_folder = medium_folder
else:
destination_folder = large_folder
# 移动图片到对应的分类文件夹
new_path = os.path.join(destination_folder, filename)
os.rename(image_path, new_path)
print("分类完成!")
# 运行示例
folder_path = "图片文件夹的路径"
classify_images(folder_path)