为了账号安全,请及时绑定邮箱和手机立即绑定

在文件夹内移动文件夹

在文件夹内移动文件夹

交互式爱情 2023-08-15 17:03:54
我有名为 from00到ff(全部小写)的文件夹,其中也有随机数量的随机命名的文件夹。我只需要将里面的文件夹移动到不同的位置。folders = list((range(256)))for i in range(256):    folders[i] = hex(folders[i])[2:4]    if len(folders[i]) == 1:        folders[i] = "0" + folders[i]for i in range(len(folders)):    shutil.move(f"D:\folders\{folders[i]\*}", "D:\MainFolder")我期望里面的所有文件都D:\folders\(00)移入D:\Mainfolder并重复,直到所有文件都移入,但它抛出一个错误:OSError: [Errno 22] Invalid argument: 'D:\\folders\\00\\*'另外,有什么方法可以改进我制作数组的方式吗?
查看完整描述

2 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

shutil.move期望得到一个明确的路径作为参数。看来您对glob可以使用类似 shell 的通配符的路径感到困惑。我假设*您的意思是移动该文件夹下的任何内容,但这不是必要的。正如文档所述:

递归地将文件或目录 (src) 移动到另一个位置 (dst)

(强调我的)。


作为旁注,您可以folders通过使用字符串格式更轻松地获取列表:

folders = [f"{hex(i)[2:]:0>2}" for i in range(256)]

或者干脆避免将这样的列表保存在内存中,只需执行以下操作:

for i in range(256):
    shutil.move(f"D:\folders\{hex(i)[2:]:0>2}", "D:\MainFolder")


查看完整回答
反对 回复 2023-08-15
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您需要将命令修复为: shutil.move(f"D:\folders\{folders[i]}\*","D:\MainFolder")



查看完整回答
反对 回复 2023-08-15
  • 2 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信