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

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

新規登録して質問してみよう
ただいま回答率
85.48%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2359閲覧

[Python] Image.open()で値が受け取れません。

chario

総合スコア2

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/04 17:16

実現したいこと・困ってる事

pythonでtkinterやPIL等を使って画像をフォーマットするコードを書いていますが、行き詰ってしまったため質問させてください。
私はプログラミング初心者です。言葉足らずだと思いますが、よろしくお願いします。

・やりたいこと
今私はtkinterやPIL等を使ってボタン一つでスクレイピングで引っ張ってきた画像を保存、チェックボックスでフラグを回収、拡張子毎のディレクトリを作り、そのディレクトリ中に画像をフォーマットし、保存したいと考えてます。

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

ディレクトリの名前などは伏せさせていただきます。

・困っていること
ディレクトリを指定しfor文で中身を一つ一つを変数にいれconvertしようとしていますが、値を受け取れず困ってます。

以下のエラーメッセージが発生しました。

Exception in Tkinter callback Traceback (most recent call last): File "D:\Python\lib\tkinter\__init__.py", line 1892, in __call__ return self.func(*args) File "D:\xxx\python\xxxxx\xxxxx.py", line 48, in url_get J_img = Image.open(J) File "D:\Python\lib\site-packages\PIL\Image.py", line 2912, in open fp = builtins.open(filename, "rb") FileNotFoundError: [Errno 2] No such file or directory: '2aehogehogehoge0.jpg'

該当のソースコード

python

1 if ck_jpg.get(): 2 path = Path(input_text.get() + "/test_jpeg") 3 os.makedirs(path,exist_ok=True) 4 for J in os.listdir(directory): 5 basename = os.path.basename(J) 6 name = basename[:-4] + ".png" 7 J_img = Image.open(J) 8 J_img.convert("RGB") 9 J_img.save(path, format = "jpeg", quality=95)

試したこと

・エラー文で見つからないとされるファイルはちゃんとありました。
・for J in glob.glob("./original"): も試してみましたが同じように返されただけでした。

print(J)          ###この時点で値が入っている事は確認が取れました。
J_img = Image.open(J)  ###なぜかこの行に来るとファイルないぜこの野郎と返されてしまいました。

迷子のJは一体どこにいってしまったんでしょうか

補足情報(FW/ツールのバージョンなど)

これが補足情報でいいのかわからないのですが、IDEL(3.9 64-bit)で実行しています。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

起こりうる可能性を上げると、「Pythonプログラムを実行したディレクトリ」と「処理内においてos.listdirで指定したディレクトリ」が一致していないのでしょう。

os.listdirは「指定したフォルダにある**ファイル名のリスト **」を返します。
(ファイルのフルパスでないことに注意する必要があります)

for J in os.listdir(directory): J_img = Image.open(J)

この場合、Image.open(J)ではファイル名のみを指定していることになるため、「現在実行中のディレクトリにあるJという変数内にあるファイル名」を探します。
たまたまあれば動く可能性はありますが、なければもちろん動きません。
※現在実行中ディレクトリはos.getcwd()などで取得可能です。確認してみてください

例えば、以下のようにフルパスを組み立てて引数とすることで動くのではないでしょうか。

for J in os.listdir(directory): J_path = os.path.join(directory, J) J_img = Image.open(J_path)

投稿2021/06/04 17:33

attakei

総合スコア2738

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chario

2021/06/05 10:19

ありがとうございます!Jは見つかりました!
guest

0

こんばんは。

問題文読ませていただきました。

ファイルパスがうまくいっていないみたいですね。pwdを用いて画像パスの確認&以下の記事を参考に画像パスの指定をお願いいたします。????‍♂️

https://techacademy.jp/magazine/27257

投稿2021/06/05 10:36

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問