Python Giving拍摄的屏幕快照名称取决于i

问题描述

我想拍摄一个确定区域的屏幕快照,并根据循环中的i保存图像,然后滚动并继续。当滚动工作时,我最终在每个文件夹上只有1个保存的图像,而我每个文件夹应该有5个。帮助吗?

import time
import pyautogui
import sys


i = 10
while i >=6:
    pyautogui.moveto(54,662)
    pyautogui.dragTo(578,662,3,button='left')
    pyautogui.mouseUp(button='left')
    im = pyautogui.screenshot(region=(54,398,524,528))
    im.save(r"c:\users\yagci\desktop\istanbul\0\(10-i).png")
    i -=1
    time.sleep(1)
    if i==5:
        pyautogui.moveto(316,916)
        pyautogui.dragTo(3316,button='left')
        pyautogui.mouseUp(button='left')
        i-=1

        while 0<=i <5:
            pyautogui.moveto(578,662)
            pyautogui.dragTo(54,button='left')
            pyautogui.mouseUp(button='left')
            im = pyautogui.screenshot(region=(54,528))
            im.save(r"c:\users\yagci\desktop\istanbul\1\i.png")
            i -=1
            time.sleep(1)


解决方法

您的行

im.save(r"c:\users\yagci\desktop\istanbul\1\i.png")

应该像

im.save(f"c:\users\yagci\desktop\istanbul\1\{i}.png")

有关字符串模板的用法。使用r可以创建一个对您没有帮助的原始字符串。否则使用

im.save("c:\users\yagci\desktop\istanbul\1\" + str(i) + ".png")

对您来说可能更易读

,

一个问题肯定是路径字符串中的“ i”没有转换为它的值。

@richiek答案的替代方法是使用:

im.save(r"c:\users\yagci\desktop\istanbul\0\(10-{}).png".format(i))

im.save(r"c:\users\yagci\desktop\istanbul\1\{}.png".format(i))