質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.06%

Pythonのpyautoguiでスクリーンショットを撮りたい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 2,151

score 13

Pythonでpyautoguiでスクリーンショットを撮りたい(マウスポインタの座標RGBを表示したい)

Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 03:13:28) 
macOS Mojave

書籍を読みながら試していますがpyautoguiのスクリーンショットを撮る所でエラーが出てしまい解決ができなかった為質問させて頂きます。


ソースコード

import pyautogui
print('中断するにはCtrl-Cを押してください。')

try:
while True:
x, y = pyautogui.position()
position_str = 'x:' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
pixel_color = pyautogui.screenshot().getpixel((x,y))
position_str += ' RGB: (' + str(pixel_color[0]).rjust(3)
position_str += ', ' + str(pixel_color[1]).rjust(3)
position_str += ', ' + str(pixel_color[2]).rjust(3) + ')'
print(position_str, end='')
print('\b' * len(position_str), end='',flush=True)
except KeyboardInterrupt:
print('\n終了')

発生している問題・エラーメッセージ

エラーメッセージ


FileNotFoundError: [Errno 2] No such file or directory:

該当のソースコード

Traceback (most recent call last):
File "/Users/Masat/Desktop/mouseNow_2.py", line 11, in <module>
pixel_color = pyautogui.screenshot().getpixel((x,y))
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyscreeze/init.py", line 331, in _screenshot_osx
im = Image.open(tmpFilename)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/PIL/Image.py", line 2609, in open
fp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: '.screenshot2018-1206_20-43-27-760098.png'

試したこと

Python再インストール
pillow再インストール

Windows10でpythonをインストールし、同様のファイルを実行した所問題なく実行出来ましたのでmac起因の現象かと思います。
Image.pyの中身を見てみるも何故ファイルが見つからないのかがわからず困惑しています。

お手数をおかけしますがご回答いただけましたら幸いです。
よろしくお願い致します

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

pyscreeze ライブラリ が Mojave にまだ対応していない ことが原因のようで、 同じ問題に悩んでいる方々の Issue が GitHub に切られています。今の所修正は commit されていません。

取り急ぎの対策としては、上記 Issue で bronsonavila さんが仰っているように、 pyscreeze/__init__.py の中の、 一時ファイル名を決めているこの箇所 を書き換え、 ドット以外の文字から始まるファイル名に変更する 必要があるようです。 bronsonavila さんは _screenshot へと修正なさっていました。恐らくは、ファイル名がドットから始まるドットファイル、つまり 隠しファイルの扱いについて Mojave で非互換な仕様変更が入った のであろうとは推測できるのですが、実際にどのような変更が入ったのかは私の調べる限りでは不明でした。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/07 18:02

    argparse様

    ご教授いただきありがとうございます。
    先程記載していただいたとおりにpyscreezeを書き換えた所、正常に動作いたしました。

    暫く悩んで進まなかったので本当に助かりました。
    又調べて頂きご回答くださったようで重ね重ね御礼申し上げます。

    私はまだまだプログラミングの学習は始めたばかりなのですが、精進し私も他の方の役に立てるよう知識、技術を身に着けてい行きたいと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.06%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る