python 某个目录下有若干个文件夹,每个文件夹里都有若干张图,请写一个程序,至保留每个文件夹中前59张图片
时间: 2024-12-14 22:25:56 浏览: 12
在Python中,你可以使用`os`, `shutil`, 和 `pathlib` 这些内置模块来遍历目录并处理图片。这里是一个基本的示例程序,它会删除每个文件夹中多余的图片,只保留前59张:
```python
import os
from pathlib import Path
# 设置目标目录
target_dir = Path('your_directory_path')
# 遍历目标目录及其子目录
for folder_path in target_dir.iterdir():
# 确保是文件夹,不是其他类型的路径
if folder_path.is_dir():
img_count = 0
img_list = list(folder_path.glob('*.jpg')) + list(folder_path.glob('*.png')) # 假设所有图片都是.jpg 或 .png 格式,可以根据实际需要修改
# 如果图片超过59张,则按文件名排序并删除多余的
if len(img_list) > 59:
img_list.sort()
for img in img_list[59:]:
img.unlink() # 删除图片文件
print(f"已完成处理 {folder_path.name}")
相关问题
想在一个python程序中打印多张图
在 Python 中,如果你想在一个程序中打印多张图,可以利用 Matplotlib 或其他绘图库如 Seaborn 或 Plotly 等。这里是一个基本的例子,假设你已经有了多组数据需要绘制,并且使用了 Matplotlib:
```python
import matplotlib.pyplot as plt
# 假设我们有三组数据
data1 = [1, 2, 3, 4, 5]
data2 = [6, 7, 8, 9, 10]
data3 = [11, 12, 13, 14, 15]
# 创建一个包含多个子图的 Figure 对象
fig, axs = plt.subplots(nrows=1, ncols=3, figsize=(12, 4)) # 分成一行三列
# 分别在每个子图上绘制数据
axs[0].plot(data1)
axs[1].bar(data2)
axs[2].scatter(data3)
# 设置子图标题
axs[0].set_title('Line plot')
axs[1].set_title('Bar plot')
axs[2].set_title('Scatter plot')
# 合并所有子图
plt.tight_layout() # 保证子图之间的间距不会过大
plt.show()
```
在这个例子中,`subplots` 函数用于创建一个新的 Figure 并生成多个子图,而每个子图都是一个单独的 Axes 对象。然后分别在每个子图上调用相应的绘图方法(如 `plot`, `bar`, `scatter`)。最后显示整个图形。
python实现将文件夹中的所有图像,组合成一张图,每张图顶部放上图片名的文字
可以使用 Python 的图像处理库 Pillow 来实现这个功能。
以下是一个示例代码:
```
from PIL import Image, ImageDraw, ImageFont
import os
# 设置文件夹路径
folder_path = '/path/to/folder'
# 读取文件夹中的所有图片
images = []
for file in os.listdir(folder_path):
file_path = os.path.join(folder_path, file)
if os.path.isfile(file_path) and file_path.endswith('.jpg'):
images.append(file_path)
# 计算出每张图片的高度,使得所有图片的总高度为 1000 像素
total_height = sum(Image.open(image).size[1] for image in images)
height = 1000
ratio = height / total_height
widths = []
for image in images:
w, h = Image.open(image).size
widths.append(int(w * ratio))
# 创建一个空白图片,用来保存最终的组合图
final_image = Image.new('RGB', (sum(widths), height))
# 循环处理每张图片
x_offset = 0
for image in images:
img = Image.open(image)
# 缩放图片
img = img.resize((widths[images.index(image)], int(img.size[1] * ratio)), Image.ANTIALIAS)
# 在空白图片上拼接图片
final_image.paste(img, (x_offset, 0))
x_offset += img.size[0]
# 循环处理每张图片的名称
draw = ImageDraw.Draw(final_image)
font = ImageFont.truetype('arial.ttf', 16)
y_offset = 0
for image in images:
draw.text((0, y_offset), os.path.basename(image), font=font, fill=(0, 0, 0))
y_offset += Image.open(image).size[1] * ratio
# 保存组合图片
final_image.save('final.jpg')
```
在上面的代码中,需要注意的是:
- 需要安装 Pillow 库,如果没有安装
阅读全文