首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PIL截图

使用PIL截图
EN

Stack Overflow用户
提问于 2016-12-03 02:34:19
回答 2查看 11.3K关注 0票数 1

我正在编写每1分钟截屏一次的脚本,但有一个问题是,当我保存它时,它会给我无效的参数,我不知道为什么。

代码:

代码语言:javascript
复制
from PIL import ImageGrab
from PIL import Image
import time
import datetime
import os

def screenShot():
    while True:
        try:
            date = str(datetime.date.today())
            hour=str(datetime.datetime.now().strftime("%H"))
            os.makedirs("D:/mine/" + date + "/" + hour)
        except OSError,e:
            if e.errno != 17:
                raise
            time.sleep(1)
            pass
        while True:
            date = str(datetime.date.today())
            hour = str(datetime.datetime.now().strftime("%H"))
            date_time = str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
            img = ImageGrab.grab()
            FILES_DIR = 'mine'
            SAVE_PATH = "D:/"
            LOGFILE_NAME = "%s.png" % date_time
            LOGFILE_PATH = os.path.join(SAVE_PATH, FILES_DIR, LOGFILE_NAME)
            img.save(LOGFILE_PATH)
            break
        time.sleep(60)

screenShot()

这是我得到的错误:

代码语言:javascript
复制
IOError: [Erno 22] Invalid argument: 'D:/mine\\2016-12-02 20:24:37.png'

我搜索了很多,我找到了这段代码,它可以工作,但我看不出这段代码和我的代码有什么不同。

代码语言:javascript
复制
import os
import sys
import time
from PIL import ImageGrab
from PIL import Image
from os import environ
import random
n = -1
while True:
    n += 1
    # generate a random time between 120 and 300 sec
    random_time = random.randrange(1,2)
    # wait between 120 and 300 seconds (or between 2 and 5 minutes)
    print "Next picture in: %.2f minutes" % (float(random_time) / 60)
    time.sleep(random_time)
    img = ImageGrab.grab()
    FILES_DIR = 'mine'
    SAVE_PATH = "D:/"
    #SAVE_PATH = os.path.expanduser("~")    #It is cross-platform
    LOGFILE_NAME = "test{n:0>5}.png".format(n = n)
    LOGFILE_PATH = os.path.join(SAVE_PATH, FILES_DIR, LOGFILE_NAME)
    print LOGFILE_PATH
    img.save(LOGFILE_PATH)

我忘了一件事,但我不知道是什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-03 03:23:56

确保SAVE_PATHFILES_DIR有效,这意味着它们存在于您的硬盘驱动器中,并且路径应该是绝对路径。例如,在linux中,它应该是~/D/mine,在您的例子中,它应该是D:\mine而不是D:/minestrftime("%Y-%m-%d %H:%M:%S")应该是strftime("%Y-%m-%d %H.%M.%S")

票数 0
EN

Stack Overflow用户

发布于 2020-04-26 00:16:56

D:/24\2016-12-02 20:24:37.png。如果有"/“和"\”,则一定是格式化错误。而且,和其他人一样:你不能用冒号创建文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40938868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档