使用Python进行Screengrabs,增加文件名

时间:2016-12-12 16:13:29

标签: python file-io screenshot

我正在使用此代码在Python系统上使用Python制作screengrab:

from gi.repository import Gdk

window = Gdk.get_default_root_window()
x, y, width, height = window.get_geometry()

print("The size of the root window is {} x {}".format(1920, 1080))

# get_from_drawable() was deprecated. See:
# https://developer.gnome.org/gtk3/stable/ch24s02.html#id-1.6.3.4.7
pb = Gdk.pixbuf_get_from_window(window, 384, 216, 1152, 648)

if pb:
    pb.savev("screenshot.png", "png", (), ())
    print("Screenshot saved to screenshot.png.")
else:
    print("Unable to get the screenshot.")

我想要做的是每次运行程序时Python都会增加文件名。所以输出文件第一次像“screenshot0.png”,第二次“screenshot1.png”等。

1 个答案:

答案 0 :(得分:0)

由于您的程序每次都是从头开始运行,因此您无法存储最后一个屏幕截图索引(即使您可能在磁盘和存储的计数器之间存在差异)

但是,您可以检查以前的文件是否存在并增加计数器,直到它不存在,如下所示:

counter=0
while True:
    new_name = "screenshot{:04}.png".format(counter)
    if not os.path.exists(new_name):
        break  # file doesn't exist: we can use that name
    counter+=1

pb.savev(new_name, "png", (), ())

请注意{:04}格式,它会创建00010002前缀等...所以文件在文件浏览器中正确排序(优于普通{})< / p>

唯一的缺点是,如果您的文件夹中已有10000个文件,则在创建新文件之前将有10000个成功的文件测试。