要インストール: requests
画像ダウンロード処理のサンプル
codeとaddressという項目を持つCSVを読み込んで、当該のaddress(カンマ区切りで複数定義されている)の画像をダウンロードして、codeの名称をベースとしたファイル名で保存する。
ということをしている。
"""
ファイル名: main.py
作成者: UniqueVisionProductions
ダウンロード動作テスト用 メインファイル
このファイルには、以下の関数が含まれています:
- main: 起点となる関数
変更履歴
- Ver.1.0.0.1 :
"""
import csv
import os
import requests
def main():
"""
メイン関数
Parameters:
None
Returns:
None
Raises:
None
"""
# ユーザーのホームディレクトリを取得
desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
# 読み込み元ファイル
base_filename = "images_01.csv"
csvfilepath = os.path.join(desktop_path, base_filename)
# ダウンロード先
download_dir = os.path.join(desktop_path, "imagedownload")
# ディレクトリが存在しない場合に作成
os.makedirs(download_dir, exist_ok=True)
with open(csvfilepath, newline="", encoding="shift_jis") as f:
reader = csv.DictReader(f) # ヘッダー行をキーにして辞書として読み込む
records = [row for row in reader] # 各行を辞書としてリストに格納
for record in records :
count = 0
for url in record['address'].split(","):
filename = f"{record['code']}_{count}.jpg" if count else f"{record['code']}.jpg"
filepath = os.path.join(download_dir, filename)
response = requests.get(url) # 画像を取得
if response.status_code == 200:
with open(filepath, "wb") as f:
f.write(response.content) # バイナリデータを書き込み
# ファイル項番更新
count+=1
print(f"{record['code']}: ダウンロード完了")
else:
print(f"{record['code']} ダウンロード失敗:", response.status_code)
if __name__ == "__main__":
try:
# 引数なし
main()
except Exception as e:
# エラー検出
print("ERROR : ", e)
finally :
# キー入力待ち
input("Press any key to finish.")
コメントを残す