【发布时间】:2020-09-09 06:05:32
【问题描述】:
我有一个简单的 python 脚本,可以截取运行 Ubuntu 的计算机的屏幕截图。我想让它在启动时自动运行,所以我把@reboot python3 /bin/program.py放在了非sudo版本的crontab中。
程序从终端运行时运行良好,但出现错误pyscreenshot.err.FailedBackendError。我把它放在一个 try 循环中,让它将所有异常写入一个文件,这就是我发现错误消息“所有后端失败”的原因。
这与程序“pyscreenshot”无法正常工作有关。
import pyscreenshot as screen
import os
from numpy import random
from time import sleep
from os.path import expanduser
TMP_SCREEN_PATH = expanduser('~') + '/.UE/tmp.png'
LOG_FILE_PATH = expanduser('~') + '/.UE/log.txt'
GRAB_DELAY_RANGE = (1, 10)
def screenshot(save_path=TMP_SCREEN_PATH):
img = screen.grab()
img.save(save_path)
def delay(delay_range):
sleep_time = random.randint(delay_range[0], delay_range[1])
print(f"Sleeping for {sleep_time} seconds")
sleep(sleep_time)
def main():
try:
while True:
screenshot()
delay(GRAB_DELAY_RANGE)
except KeyboardInterrupt:
print("Nope")
main()
except Exception as e:
print(e)
with open(LOG_FILE_PATH, 'a') as f:
f.write(str(type(e))+str(e)+'\n')
sleep(5)
main()
f = open(LOG_FILE_PATH, 'w+')
f.write('Startup')
f.close()
main()
我需要以下解决方案之一:
- 简单解决问题
- 在启动时运行程序的另一种方式
- 用于截屏的不同模块
感谢任何帮助,谢谢
【问题讨论】:
标签: python python-3.x linux ubuntu cron