python上传本目录图片并移动图片

zhuc 2026-06-03 54 阅读
import os
import requests


# ====================== 配置区 ======================
UPLOAD_URL = "https://XXXX"
IMAGE_DIR = "./"
ARCHIVE_DIR = "./success"
FILE_FIELD_NAME = "file"
# 模拟浏览器请求头,解决403拦截
HEADERS = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
# ==================================================


ALLOWED_EXTENSIONS = (".jpg", ".jpeg", ".png", ".gif", ".bmp", ".webp")


def upload_and_move_images():
    if not os.path.exists(ARCHIVE_DIR):
        os.makedirs(ARCHIVE_DIR)
        print(f"已创建归档目录:{ARCHIVE_DIR}")


    image_files = [
        f for f in os.listdir(IMAGE_DIR)
        if os.path.isfile(os.path.join(IMAGE_DIR, f))
        and f.lower().endswith(ALLOWED_EXTENSIONS)
    ]


    if not image_files:
        print("当前目录未找到任何图片文件")
        return


    print(f"找到 {len(image_files)} 张图片,开始上传...\n")


    success_count = 0
    fail_count = 0


    for filename in image_files:
        file_path = os.path.join(IMAGE_DIR, filename)
        archive_path = os.path.join(ARCHIVE_DIR, filename)


        try:
            with open(file_path, "rb") as img_file:
                files = {FILE_FIELD_NAME: (filename, img_file, "image/*")}
                # 带上headers请求头
                response = requests.post(UPLOAD_URL, headers=HEADERS, files=files, timeout=30)


            if response.status_code == 200:
                os.rename(file_path, archive_path)
                print(f"✅ 上传成功:{filename} → 已移动至归档目录")
                success_count += 1
            else:
                print(f"❌ 上传失败:{filename} | 状态码:{response.status_code} | 返回内容:{response.text}")
                fail_count += 1


        except Exception as e:
            print(f"⚠️  处理失败:{filename} | 错误:{str(e)}")
            fail_count += 1


    print(f"\n======== 上传完成 ========")
    print(f"成功:{success_count} 张")
    print(f"失败:{fail_count} 张")
    print(f"失败图片保留在原目录,成功图片已移动至 {ARCHIVE_DIR}")


if __name__ == "__main__":
    upload_and_move_images()



安装依赖


 pip install urllib3==1.24.3 requests==2.21.0