当你需要封装这个功能为一个函数,并允许自定义文件名时,可以按以下方式实现:

from PIL import ImageGrab
import os
import datetime

def capture_screen_and_save(filename, output_dir='C:\\screen'):
    # 获取当前日期
    today = datetime.date.today()

    # 创建保存截图的目录
    save_dir = os.path.join(output_dir, str(today))
    os.makedirs(save_dir, exist_ok=True)

    # 截取全屏
    screenshot = ImageGrab.grab()

    # 生成文件路径
    timestamp = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
    file_path = os.path.join(save_dir, f'{filename}_{timestamp}.png')

    # 保存截图
    screenshot.save(file_path)

    return file_path

# 使用示例
custom_filename = "my_screenshot"
saved_path = capture_screen_and_save(custom_filename)

print(f"截图已保存到: {saved_path}")

上面的代码定义了一个名为capture_screen_and_save的函数,它接受两个参数:filename(用于自定义文件名)和output_dir(保存目录的根路径,默认为C盘的'screen'目录)。这个函数会返回保存截图的文件路径。

使用时,你可以传递自定义的文件名给filename参数来保存截图,如示例中的"my_screenshot"。截图将会保存在指定的目录,文件名包含自定义名称和时间戳。