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

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

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

1回答

1966閲覧

python ファイル実行中途中停止する

kome6286

総合スコア4

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/04/17 05:57

編集2021/04/18 03:08

python ファイル実行中途中停止する。
csvファイルに記載のURLを読み取り、それを次々にダウンロードしていくプログラムです。
先月までは調子よくダウンロードできていたのですが、先日ひさしぶりにプログラムを実行してみると、途中でエラーもなく動かなくなってしまいました。
なお、友人の作成したプログラムなので、自分にはわからないこともあります。
また、停止するタイミングはプログラム実行ごとにばらばらです。

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

エラーメッセージなし

Traceback (most recent call last): File "/Users/username/Downloads/image_downloader.py", line 25, in <module> request = urllib.request.Request( File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 328, in __init__ self.full_url = url File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 354, in full_url self._parse() File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 383, in _parse raise ValueError("unknown url type: %r" % self.full_url) ValueError: unknown url type: 't'

該当のソースコード

import

1import sys 2import time 3import os 4import pandas as pd 5import cv2 6import traceback 7 8df = pd.read_csv('/Users/yonedakouki/banggood/img_ban.csv', 9 encoding='cp932', dtype=object) 10 11 12headers = { 13 "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"} 14for column_name, item in df.iteritems(): 15 16 if column_name == 'url' or '_1' or '_2' or '_3' or '_4' or '_5' or '_6' or '_7' or '_8' or '_9': 17 for index, row in df.iterrows(): 18 19 try: 20 url_separate = os.path.splitext(row[column_name]) 21 url_extension = url_separate[1].replace('URL', '') 22 url_extension = url_extension.replace('#Yosuke', '') 23 24 request = urllib.request.Request( 25 row[column_name], headers=headers) 26 try: 27 mem = urllib.request.urlopen(request).read() 28 # ファイルへの保存 29 # url_extension 30 x = row['code'] + column_name.replace('URL', '') + ".jpeg" 31 with open('/Users/yonedakouki/banggood/u/' + x, mode="wb") as f: 32 f.write(mem) 33 print(x) 34 35 if url_extension == ".gif": 36 print("!!!gif!!!") 37 else: 38 img = cv2.imread('/Users/yonedakouki/banggood/u/' + x) 39 img2 = cv2.resize(img, dsize=None, fx=0.5, fy=0.5) 40 cv2.imwrite( 41 '/Users/yonedakouki/banggood/u/' + x, img2) 42 43 except urllib.error.HTTPError: 44 print("!!! HTTP エラー") 45 traceback.print_exc() 46 except Exception as err: 47 print("!!! HTTP エラー以外のエラー") 48 traceback.print_exc() 49 time.sleep(1) 50 51 except Exception as err: 52 print("!!! URL 関連のエラー") 53 print( 54 "CSVに定義されている元のURL[" + row[column_name] + "]に問題があるようです。スキップします。") 55 56 else: 57 print() 58 59f.close() 60print("正常に終了しました。") 61 62 63```ここに言語名を入力 64python 65 66### 試したこと 67 68python update 2.7.1→3.9.0へ 69pandas downgrade 0.24.2へ 70 71エラーログ確認 72!!! URL 関連のエラー 73Traceback (most recent call last): 74File "/Users/username/Downloads/image_downloader.py", line 25, in <module> 75request = urllib.request.Request( 76File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 328, in __init__ 77self.full_url = url 78File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 354, in full_url 79self._parse() 80File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 383, in _parse 81raise ValueError("unknown url type: %r" % self.full_url) 82ValueError: unknown url type: 't' 83 84>>>URLが記載されているcsvファイルを確認すると、URLではなく”t”のみ記載されたセルがあった 85  →”t”を削除してもプログラムは停止する。 86 87>>>上記エラーが出ても、すぐには停止せず、数枚画像をダウンロードをしてから停止した。 88>>>上記エラーが出ずに停止する場合もある。 89 90 91### 補足情報(FW/ツールのバージョンなど) 92python 2.7 → 3.9.0へupdate

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

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

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

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

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

guest

回答1

0

2回目+3回目(エラー通知の変更)+ 4回目(全条件のトレース)

Python

1import sys 2import time 3import os 4import pandas as pd 5import cv2 6import traceback # エラーが出た際にエラーが起きた旨の通知用に追加 7 8 9df = pd.read_csv('/Users/username/banggood/img_ban.csv', encoding='cp932', dtype=object) 10 11headers = { 12 "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"} 13for column_name, item in df.iteritems(): 14 print("捜査中 カラム",column_name,"アイテム",item ,"...",end="") 15 if column_name == 'url' or '_1' or '_2' or '_3' or '_4' or '_5' or '_6' or '_7' or '_8' or '_9': 16 for index, row in df.iterrows(): 17 18 try: 19 url_separate = os.path.splitext(row[column_name]) 20 url_extension = url_separate[1].replace('URL', '') 21 url_extension = url_extension.replace('#username', '') 22 23 request = urllib.request.Request( 24 row[column_name], headers=headers) 25 try: 26 mem = urllib.request.urlopen(request).read() 27 28 x = row['code'] + column_name.replace('URL', '') + ".jpeg" 29 with open('/Users/username/banggood/u/' + x, mode="wb") as f: 30 f.write(mem) 31 # print(x) 32 33 if url_extension == ".gif": 34 print("スキップ(GIF)") 35 else: 36 img = cv2.imread('/Users/username/banggood/u' + x) 37 # print(img.shape) 38 img2 = cv2.resize(img, dsize=None, fx=0.5, fy=0.5) 39 cv2.imwrite('/ Users/username/banggood/u' + x, img2) 40 print("保存(GIF以外) パス:",x, "shape",img.shape) 41 42 except urllib.error.HTTPError: 43 print("スキップ(HTTPエラー)") 44 # traceback.print_exc() 45 except Exception as err: 46 print("スキップ(HTTP以外のエラー)") 47 # traceback.print_exc() 48 time.sleep(1) 49 50 except Exception as err: 51 print("スキップ(URLエラー) CSVに定義されている元のデータ[" + row[column_name] + ,url_extension + "]に問題があるようです。") 52 53 else: 54 print("スキップ 対象外のカラム名です。") 55 56print("正常に終了しました。") 57 58# f.close() # <---with ○○ as fのため不要 59

初回分

Python

1try: 2except:

をすべて外してください。エラーが起きたらexceptでトラップされますが、print()で何も表示されなくなるためです。表示するには、以下のようにしてください。

Python

1try: 2except 3 import traceback 4 traceback.print_exc()

投稿2021/04/17 06:04

編集2021/04/18 04:49
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kome6286

2021/04/17 06:19

ご回答ありがとうございます。 try exceptを全て消すと、プログラムが作動しなくなりました。
退会済みユーザー

退会済みユーザー

2021/04/17 06:49 編集

その止まった際に表示されるエラーが「本当に解決しないといけない(恐らくkme6286さんが知りたかった)エラー」です。 今まで「勝手に落ちていた」はexceptでトラップされたときに「黙って終了」していたからなんですね。 これからやらないといけないのは「○○が理由で落ちた」を解決することです。 多分英語でどうして落ちたか表示されるので、それをこの質問の投稿の内容を修正して教えてください。 あと、Pythonはインデントが重要ですので、 ```Python # 実際のコード ``` のようにPythonのコードの表示方法を修正してください。 ※windowsのユーザー名は伏せた方が安全です。今からでも良いので伏せてください。
kome6286

2021/04/17 07:47

ご指摘ありがとうございます。 以下try except を消した際のエラー文です。 username@Mac ~ % /Users/username/.pyenv/versions/3.8.0/bin/python /Users/username/Downloads/image_downloader.py /Users/username/.pyenv/versions/3.8.0/lib/python3.8/site-packages/pandas/compat/__init__.py:120: UserWarning: Could not import the lzma module. Your installed Python is incomplete. Attempting to use lzma compression will result in a RuntimeError. warnings.warn(msg) Traceback (most recent call last): File "/Users/username/Downloads/image_downloader.py", line 23, in <module> request = urllib.request.Request( File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 328, in __init__ self.full_url = url File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 354, in full_url self._parse() File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 383, in _parse raise ValueError("unknown url type: %r" % self.full_url) ValueError: unknown url type: '1796410-POA8222659' また、 import traceback traceback.print_exc() を記入しても、エラー文は出てきませんでした。
退会済みユーザー

退会済みユーザー

2021/04/17 09:14

問題が2つあります。 1.lzmaが原因かわかりませんが… 古いpandasにすると直せそうです。こちらの対応の方が楽だと思います。 pip install pandas==0.24.2 もしくは、Ubuntuでしたね、 sudo apt-get install liblzma-dev で試して下さい。(もしかしたらPythonの再インストールが必要かもしれません) 2. urllib.request.Request のエラーで問題が起きています。こちらで試験したいのですが、個人情報につながらないようなURLであればURLを教えていたけますか?
kome6286

2021/04/17 09:45

ご丁寧にありがとうございます。 1.上記tracebackのコードを試しましたが、エラーなしで停止しました。 pandasをダウングレードしましたが、停止しました。 homebrewを使用してliblzma-devをインストールしましたが、同様に停止しました。 2.URLを共有したいのですが、量が膨大ですので控えさせていただきます。 URLの内容は一般的な商品画像です。
kome6286

2021/04/17 10:01

!!! URL 関連のエラー Traceback (most recent call last): File "/Users/username/Downloads/image_downloader.py", line 25, in <module> request = urllib.request.Request( File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 328, in __init__ self.full_url = url File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 354, in full_url self._parse() File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 383, in _parse raise ValueError("unknown url type: %r" % self.full_url) ValueError: unknown url type: 't' !!! URL 関連のエラー Traceback (most recent call last): File "/Users/username/Downloads/image_downloader.py", line 25, in <module> request = urllib.request.Request( File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 328, in __init__ self.full_url = url File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 354, in full_url self._parse() File "/Users/username/.pyenv/versions/3.8.0/lib/python3.8/urllib/request.py", line 383, in _parse raise ValueError("unknown url type: %r" % self.full_url) ValueError: unknown url type: 't' 上記のエラーが出ていました。 エラーが出たあと、少しの間はプログラムは動いたのですが、 止まりました。 止まった時にはエラーは出ていませんでした。
退会済みユーザー

退会済みユーザー

2021/04/17 15:27 編集

多分ですが、エラーの原因はURLがおかしいからです。print("!!! URL 関連のエラー")のあとに以下の2行を入れてください。たぶん"t"のようなURL出ない文字列が入っていると思います。 print("ROW", row[column_name]) print("EXT", url_extension ) 止まったときにエラーがないのは、恐らくdfの中の走査が終了したからと思います。もし違う様子でしtら状況を教えてください。 ---- 参考: https://teratail.com/questions/162376
kome6286

2021/04/18 01:23 編集

回答ありがとうございます。 上記コードを入れてもエラーメッセージは出ませんでした。 仰るように、URL関係で問題があるように思います。 また、URLが書いてあるcsvファイルを確認したところ、「t」のみ書かれている部分がありました。 「t」を削除し、再度動かしてみましたが、やはりエラーは出ず、停止しました。
退会済みユーザー

退会済みユーザー

2021/04/18 01:38

URLエラーの通知方法の変更と、正常に終了した旨を出すように変更しました。 URLエラーはCSVのエラーですのでプログラム側では通知するのが精いっぱいの対応と思います。 異常停止したのか、ちゃんと終了したのか示すために、最後に正常に終了した旨を出すようにしました。 これで様子を見てください。
kome6286

2021/04/18 01:54

上記コードへ編集し実行しました。 プログラムを実行し、最初に CSVに定義されている元のURL[1571367-POA5874150]に問題があるようです。スキップします。 !!! URL 関連のエラー CSVに定義されている元のURL[1571367-POA5874151]に問題があるようです。スキップします。 と何行も出力されたあと、しばらく動き、画像はダウンロードできたのですが、 途中停止しました。 もちろん、最後の”正常に終了しました”は出力されませんでした。
退会済みユーザー

退会済みユーザー

2021/04/18 04:45 編集

f.closeが一番最後にありますが、これはwith ○○ as fでやっているので不要となりますので消しました。 あとは通知条件を変えました。 これでPythonが勝手にクラッシュしているとすれば未知のバグかもしれません。 念のため並行してタスクマネージャ的なものでCPU使用率、メモリ使用率、保存容量の空き具合を確認ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問