Python循环移动文件时如何实时打印当前文件的文件名与文件大小
你要获取文件大小必须传入文件的完整绝对路径,注意要在执行shutil.move移动操作前获取大小,移动后原路径下的文件就被移除了,再调用获取大小的方法会报错。
修改后的可运行代码如下:
import os import shutil src = "C:\\..\\files" dest1 = "C:\\..\\files\\images" # 提前创建目标文件夹,不需要循环内重复判断 if not os.path.exists(dest1): os.mkdir(dest1) files = os.listdir(src) for file in files: # endswith支持直接传后缀元组,简化判断逻辑 if file.endswith((".jpg", ".png", ".jpeg")): # 拼接得到当前处理文件的完整路径,用os.path.join避免手动拼接斜杠的兼容问题 current_file_path = os.path.join(src, file) # 移动前获取文件大小,单位为字节 file_size = os.path.getsize(current_file_path) # 执行移动操作 shutil.move(current_file_path, os.path.join(dest1, file)) # 打印需要的信息,你也可以把字节除以1024转成KB/MB做更友好的展示 print(f"已移动文件名:{file},文件大小:{file_size} 字节")
核心修改说明
- 用
os.path.join(src, file)拼接得到文件的完整路径,作为参数传入os.path.getsize即可拿到对应文件的大小 - 文件夹存在判断移到循环外,避免每次匹配到符合要求的文件都重复判断,提升执行效率
- 大小获取逻辑放在移动操作前,避免文件被移走后原路径找不到文件抛出异常
内容的提问来源于stack exchange,提问作者Veronica
相关产品推荐
相关产品推荐

