运行Xvfb和CutyCapt作为Python子进程

2024-10-01 09:20:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用CutyCapt在后台截图

我的应用程序是用python编写的,通过运行一个子进程来调用CutyCapt。在

在本地(windows)工作正常,但是CutyCapt.exefor windows不需要x服务器。当我试图在我的ubuntu机器上(通过python子进程)执行代码时,它会抱怨我没有向Xvfb提供命令。但是,如果我自己在这个盒子上运行这个命令,它可以正常工作。在

对box有效的命令:

box$ xvfb-run --server-args="-screen 0, 1100x800x24" ./CutyCapt --url=http://www.google.com --out=temp.png

失败的Python代码:

^{pr2}$

返回错误:

xvfb-run: usage error: need a command to run
box$

我尝试过的事情: -用call代替Popen -从屏幕参数中剥离报价 -将屏幕参数拆分为一个列表 -设置操作系统环境[“DISPLAY”]=“:0”,然后执行子流程

我需要从CutyCapt命令中断xvfb进程吗?在

任何帮助都将不胜感激。在


Tags: run代码命令服务器box应用程序参数屏幕
1条回答
网友
1楼 · 发布于 2024-10-01 09:20:26

在Ubuntu11.10上,安装了cutycapt和xvfb包后,以下操作(至少对我来说…):

import shlex
import subprocess

def url_screengrab(url, **kwargs):
    cmd = '''xvfb-run  server-args "-screen 0, 1100x800x24"
             /usr/bin/cutycapt  url={u}  out=temp.png '''.format(u = url)
    proc = subprocess.Popen(shlex.split(cmd))
    proc.communicate()

url = 'http://www.google.com'
url_screengrab(url)

相关问题 更多 >