python-3.x - 将python中的屏幕截图作为cronjob
问题描述
我需要截屏(windows和linux),但我的代码是从cron/schedulle windows开始的
这是我的代码:
import pyscreenshot as ImageGrab
if __name__ == "__main__":
# grab fullscreen
im = ImageGrab.grab()
# save image file
im.save("screenshot.png")
# show image in a window
im.show()
这给我返回了以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.7/dist-packages/pyscreenshot/__init__.py", line 43, in grab
return _grab(childprocess=childprocess, backend=backend, bbox=bbox)
File "/usr/local/lib/python3.7/dist-packages/pyscreenshot/__init__.py", line 29, in _grab
return childprocess_grab(_grab_simple, backend, bbox)
File "/usr/local/lib/python3.7/dist-packages/pyscreenshot/childproc.py", line 34, in childprocess_grab
return childprocess_grab_popen(backend, bbox)
File "/usr/local/lib/python3.7/dist-packages/pyscreenshot/childproc.py", line 54, in childprocess_grab_popen
raise FailedBackendError(p)
pyscreenshot.loader.FailedBackendError: <EasyProcess cmd_param=['/usr/bin/python3', '-m', 'pyscreenshot.cli.grab_to_file', '/tmp/pyscreenshot0lficj00/screenshot.png', '0', '0', '0', '0', '--backend', ''] cmd=['/usr/bin/python3', '-m', 'pyscreenshot.cli.grab_to_file', '/tmp/pyscreenshot0lficj00/screenshot.png', '0', '0', '0', '0', '--backend', ''] oserror=None return_code=1 stdout="" stderr="Traceback (most recent call last):
File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/usr/local/lib/python3.7/dist-packages/pyscreenshot/cli/grab_to_file.py", line 8, in <module>
def main(filename, x1, y1, x2, y2, backend=""):
File "/usr/local/lib/python3.7/dist-packages/entrypoint2/__init__.py", line 440, in entrypoint
return func(**kwargs)
File "/usr/local/lib/python3.7/dist-packages/pyscreenshot/cli/grab_to_file.py", line 28, in main
im = pyscreenshot.grab(bbox=bbox, childprocess=False, backend=backend)
File "/usr/local/lib/python3.7/dist-packages/pyscreenshot/__init__.py", line 43, in grab
return _grab(childprocess=childprocess, backend=backend, bbox=bbox)
File "/usr/local/lib/python3.7/dist-packages/pyscreenshot/__init__.py", line 31, in _grab
return _grab_simple(backend, bbox, filename)
File "/usr/local/lib/python3.7/dist-packages/pyscreenshot/__init__.py", line 17, in _grab_simple
return backend_obj.grab(bbox)
File "/usr/local/lib/python3.7/dist-packages/pyscreenshot/plugins/scrot.py", line 24, in grab
im = read_prog_img([PROGRAM, "--silent"])
File "/usr/local/lib/python3.7/dist-packages/pyscreenshot/tempexport.py", line 28, in read_prog_img
im = read_func_img(run_prog)
File "/usr/local/lib/python3.7/dist-packages/pyscreenshot/tempexport.py", line 16, in read_func_img
func(filename, bbox)
File "/usr/local/lib/python3.7/dist-packages/pyscreenshot/tempexport.py", line 26, in run_prog
raise RunProgError(p.stderr)
pyscreenshot.tempexport.RunProgError: giblib error: Can't open X display. It *is* running, yeah?" timeout_happened=False>
我需要帮助来解决它。我试图改变 lib 但我发现没有一个工作。
我注意到,如果我与用户一起在 crontab 或 ssh 中运行,我的代码会运行,但在 root 中则不会。(我需要用 sudo 执行它来进行一些系统调整、文件移动和读取日志)
解决方案
推荐阅读
- python - matplotlib legend() 中的文本间距而不将字体更改为等宽
- elasticsearch - 仅返回对象中包含特定值的数组元素
- c++ - 如何检查 (*this) 上的 std::is_base_of<>
- r - 根据分组变量计算百分比
- java - java - 如何使用java TreeSet实现排序表(按元素的字段排序)?
- cloud-foundry - 在 localhost 节点应用程序运行良好,但在推送 CF 并在 Mindsphere 页面中注册后显示 404 状态
- java - 从倒计时获取变量并将其设置为 TextView
- c - MPI_send 和 MPI_recv 多次
- c# - 由于某种原因,UI 按钮无法统一工作
- c++ - C++ 中的模板类和函数