我有名為 from00到ff(全部小寫)的文件夾,其中也有隨機(jī)數(shù)量的隨機(jī)命名的文件夾。我只需要將里面的文件夾移動到不同的位置。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并重復(fù),直到所有文件都移入,但它拋出一個錯誤:OSError: [Errno 22] Invalid argument: 'D:\\folders\\00\\*'另外,有什么方法可以改進(jìn)我制作數(shù)組的方式嗎?
2 回答

海綿寶寶撒
TA貢獻(xiàn)1809條經(jīng)驗 獲得超8個贊
shutil.move
期望得到一個明確的路徑作為參數(shù)??磥砟鷮?code>glob可以使用類似 shell 的通配符的路徑感到困惑。我假設(shè)*
您的意思是移動該文件夾下的任何內(nèi)容,但這不是必要的。正如文檔所述:
遞歸地將文件或目錄 (src) 移動到另一個位置 (dst)
(強(qiáng)調(diào)我的)。
作為旁注,您可以folders
通過使用字符串格式更輕松地獲取列表:
folders?=?[f"{hex(i)[2:]:0>2}"?for?i?in?range(256)]
或者干脆避免將這樣的列表保存在內(nèi)存中,只需執(zhí)行以下操作:
for?i?in?range(256): ????shutil.move(f"D:\folders\{hex(i)[2:]:0>2}",?"D:\MainFolder")

慕蓋茨4494581
TA貢獻(xiàn)1850條經(jīng)驗 獲得超11個贊
您需要將命令修復(fù)為: shutil.move(f"D:\folders\{folders[i]}\*","D:\MainFolder")
添加回答
舉報
0/150
提交
取消