gpt4 book ai didi

python-3.x - 如何修复 Python 3 PyAutoGUI 截图错误? (苹果系统)

转载 作者:行者123 更新时间:2023-12-03 15:31:45 25 4
gpt4 key购买 nike

我一直在使用 PyAutoGUI 的任何截屏函数时出错,例如:

pyautogui.locateOnScreen('button.png')
pyautogui.pixelMatchesColor(x, y, (r, g, b))
im = pyautogui.screenshot()

我得到的错误是:

screencapture: cannot write file to intended destination, .screenshot2018-1009_16-43-26-003190.png
Traceback (most recent call last):
File "~/program.py", line 111, in <module>
pyautogui.locateOnScreen('/images/play!.png')
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyscreeze/__init__.py", line 265, in locateOnScreen
screenshotIm = screenshot(region=None) # the locateAll() function must handle cropping to return accurate coordinates, so don't pass a region here.
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyscreeze/__init__.py", line 331, in _screenshot_osx
im = Image.open(tmpFilename)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/PIL/Image.py", line 2609, in open
fp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: '.screenshot2018-1009_16-43-26-003190.png'

我不告诉它或希望它将新的屏幕截图图像保存到任何目录(它不应该)。使用 pyautogui.screenshot() 函数,我可以手动将它保存到我项目中的真实目录中,但我没有其他方法可以这样做的选项。知道如何解决这个问题吗?

我尝试过的:

  • 我查看了所有我能在网上找到的 pyautogui 屏幕截图的文档
  • 重启电脑
  • Pillow 和 pyscreeze 的降级版本

编辑:我在另一台 Mac 上试过,得到了同样的错误。在 windows bootcamp(我的 mac 上的 windows)上试过,效果很好。

最佳答案

可能的、非常 hack-ish 的修复 - 我实际上不喜欢这个答案,但它是一个快速简单的修复(在 OSX 上使用 Mojave 完成):

请注意:修改您不理解的库的源代码通常不是一个好主意,因此请您自担风险!这对我有用,你的里程可能会有所不同。

转到你的文件(你的文件路径可能不同,我只是从你的错误中复制了这个):

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyscreeze/__init__.py

找到函数“_screenshot_osx”下看起来像的行

tmpFilename = '.screenshot%s.png' % (datetime.datetime.now().strftime('%Y-%m%d_%H-%M-%S-%f'))

复制然后注释掉,将复制的行直接粘贴到注释掉的原文下面,修改成这样:

tmpFilename = r'<your preferred screenshot folder here>/screenshot%s.png' % (datetime.datetime.now().strftime('%Y-%m%d_%H-%M-%S-%f'))

保存更改,看看它是否有效。

另请注意:pyautogui.locateOnScreen 可能有点挑剔,因此即使这消除了您的错误,您仍然可能无法获得所需的坐标(可能不返回)。这可能与其他问题有关。为了测试那部分,我这样做:

import pyautogui
pyautogui.screenshot('testFull.png')
placePos = pyautogui.locateOnScreen('testFull.png')
print(placePos)

即使是光标闪烁也会把它搞砸,而 osx 有半透明的用户界面,所以在没有仔细的图像管理的情况下完美地测试它有点烦人。

关于python-3.x - 如何修复 Python 3 PyAutoGUI 截图错误? (苹果系统),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52730811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com