【问题标题】:Getting error in script that takes screenshots, variable not defined在截屏的脚本中出现错误,未定义变量
【发布时间】:2019-07-10 04:27:23
【问题描述】:

我在运行脚本时遇到错误,该脚本应该截取图像然后将它们转换为 pdf 文件。

import argparse
import os
import tempfile

import autopy
import img2pdf


def screenshot(top_left, right_bottom, next_page, total_page):
    rect_size = (right_bottom[1153] - top_left[373], right_bottom[1167] - top_left[170])
    images = []
    temp_dir = tempfile.mkdtemp()
    for i in range(total_page):
        page_num = "{}".format(i).zfill(len(str(total_page)))
        file_name = os.path.join(temp_dir, 'page-{}.png'.format(page_num))
        images.append(file_name)

        autopy.mouse.move(*next_page)
        autopy.mouse.click(delay=1)
        autopy.bitmap.capture_screen((top_left, rect_size)).save(file_name)

    return images


def image2pdf(images):
    with open("images.pdf", "wb") as f:
        f.write(img2pdf.convert(images))


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Take screenshots.')
    parser.add_argument('top_left', type=str)
    parser.add_argument('right_bottom', type=str)
    parser.add_argument('next_button', type=str)
    parser.add_argument('total_page', type=int)

    args = parser.parse_args()

    top_left = tuple(map(lambda x: int(x), args.top_left.split(',')))
    right_bottom = tuple(map(lambda x: int(x), args.right_bottom.split(',')))
    next_button = tuple(map(lambda x: int(x), args.next_button.split(',')))
    total_page = args.total_page

    print("Take screenshot at {} {} and next at {} with {} pages".format(
        top_left, right_bottom, next_button, total_page
    ))

    images = screenshot(top_left, right_bottom, next_button, total_page)
    image2pdf(images)

    print("Done, saved.")

这应该会截取屏幕截图,然后转到下一页并继续将它们全部截取,然后将所有图像转换为单个 pdf 文件。

这是我遇到的错误

usage: app.py [-h] top_left right_bottom next_button total_page
app.py: error: the following arguments are required: top_left, right_bottom, next_button, total_page

【问题讨论】:

  • parser.parse_args(top_left, right_bottom, next_button, total_page)更改为parser.parse_args()
  • 我有,它给了我这个错误usage: app.py [-h] top_left right_bottom next_button total_page app.py: error: the following arguments are required: top_left, right_bottom, next_button, total_page

标签: python python-3.x


【解决方案1】:

下面的代码有效。下面看看我是如何运行它的。

python 代码.py 12,34 34,67 12,99 12

import argparse

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Take screenshots.')
    parser.add_argument('top_left', type=str)
    parser.add_argument('right_bottom', type=str)
    parser.add_argument('next_button', type=str)
    parser.add_argument('total_page', type=int)

    args = parser.parse_args()
    top_left = tuple(map(lambda x: int(x), args.top_left.split(',')))
    right_bottom = tuple(map(lambda x: int(x), args.right_bottom.split(',')))
    next_button = tuple(map(lambda x: int(x), args.next_button.split(',')))
    total_page = args.total_page

    print("Take screenshot at {} {} and next at {} with {} pages".format(
        top_left, right_bottom, next_button, total_page
    ))

    print(args)

输出

Take screenshot at (12, 34) (34, 67) and next at (12, 99) with 12 pages
Namespace(next_button='12,99', right_bottom='34,67', top_left='12,34', total_page=12)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    相关资源
    最近更新 更多