You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python代码运行无异常但未移动含.bsw.的文件问题求助

问题分析与解决方法

问题根源

你用的source_dir.glob('*.bsw.*')只会遍历当前目录下的文件,不会递归查找多层子文件夹里的内容——那些藏在子目录里的目标文件根本没被找到,自然不会被移动。

修正后的代码

要实现递归查找,有两种简洁的写法:

写法1:用rglob(pathlib专属递归查找方法)

import pathlib
import shutil

source_dir = pathlib.Path('C:/Data/Main/')
target_dir = pathlib.Path('C:/Data/bswdata')

# 确保目标目录存在,不存在则自动创建(含父目录)
target_dir.mkdir(parents=True, exist_ok=True)

# 递归遍历所有子目录,匹配包含.bsw.的文件
for p in source_dir.rglob('*.bsw.*'):
    shutil.move(p, target_dir / p.name)

写法2:用glob加递归参数

import pathlib
import shutil

source_dir = pathlib.Path('C:/Data/Main/')
target_dir = pathlib.Path('C:/Data/bswdata')

target_dir.mkdir(parents=True, exist_ok=True)

# **匹配任意层级子目录,recursive=True开启递归查找
for p in source_dir.glob('**/*.bsw.*', recursive=True):
    shutil.move(p, target_dir / p.name)

额外注意事项

  • 原代码缺少import pathlib和import shutil语句,正式运行时必须加上,否则会触发导入错误。
  • 如果不同子目录下存在同名的目标文件,后移动的文件会覆盖先移动的。若要避免覆盖,可以给文件名添加原父目录前缀,比如改为:target_dir / f"{p.parent.name}_{p.name}"。

内容的提问来源于stack exchange,提问作者INegativeI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:12:33