Python报错TypeError: can only concatenate str (not "int") to str含义及代码问题
解决Python图片复制时的TypeError问题
错误原因
你代码里的src + (i) + ext直接把字符串src、整数i、字符串ext拼接,Python不允许字符串和整数直接相加,这就是报错的根源。另外你的src已经包含完整文件名和后缀,直接拼接会生成格式错误的目标路径(比如D:\src\C:\Users\Gamal\Pictures\Picture21.jpg0.jpg)。
修正方案
正确做法是拆分原路径的目录、文件名和后缀,再用f-string格式化生成带序号的目标路径,同时解决类型错误和路径格式问题。
修正后的代码:
import shutil import os # 原图片完整路径 src = r'C:\Users\Gamal\Pictures\Picture21.jpg' # 拆分路径,分离目录、文件名(不含后缀)和后缀 dir_path, full_filename = os.path.split(src) base_name, ext = os.path.splitext(full_filename) # 设置需要复制的次数,可自行修改 copy_times = 5 # 循环复制,序号从1开始更符合使用习惯 for i in range(1, copy_times + 1): # 生成带序号的目标路径 dst_path = os.path.join(dir_path, f'{base_name}_{i}{ext}') shutil.copy(src, dst_path)
关键修正点
- 用
os.path.split和os.path.splitext拆分路径,避免手动拼接路径时的格式错误 - 通过f-string将整数
i直接格式化为字符串,彻底解决类型拼接问题 - 生成的目标文件名格式更规范(如
Picture21_1.jpg),不会出现重复后缀的情况 - 循环从1开始,生成的序号更符合日常使用习惯
内容的提问来源于stack exchange,提问作者user19561498
相关产品推荐
相关产品推荐

