Python rglob("*") 与 glob("*)
Python rglob("*") vs glob("*)
我正在尝试将一堆名称中带有“V1.2”的文件移动到存档文件夹中。它似乎适用于以下代码:
for folder in copyPath.glob("*"):
for subfolder in folder.glob("*"):
for content in subfolder.glob("*"):
if "V1.2" in content.name:
shutil.move(content ,Path(subfolder,"Archive"))
然而,以下带有 rglob("*V1.2*")
、python 的代码只是在存档文件夹中创建了一个名为“Archive”的无扩展文件。这是为什么?
for file in copyPath.rglob("*V1.2*"):
shutil.move(file,Path(file.parent,"Archive"))
此致,
作为
您声明以下代码在存档文件夹中创建了一个名为“Archive”的文件:
for file in copyPath.rglob("*V1.2*"):
shutil.move(file,Path(file.parent,"Archive"))
shutil.move 仅在目录已存在的情况下将您的文件移动到该目录中。否则,它将移动(重命名)您的 文件。我猜 Path(file.parent, "Archive")
不是目录,所以每个符合条件的文件都被移动到一个名为“存档”的文件中,每个文件覆盖前一个文件。
修复应该很简单:
for file in copyPath.rglob("*V1.2*"):
target = Path(file.parent, "Archive")
if target.is_file():
raise ValueError(f"Invalid directory: {target} is a file!") # safety check to avoid overwriting files and data loss
if not target.is_dir():
target.mkdir(parents=True) # <- this should solve your problem
shutil.move(file, target)
我正在尝试将一堆名称中带有“V1.2”的文件移动到存档文件夹中。它似乎适用于以下代码:
for folder in copyPath.glob("*"):
for subfolder in folder.glob("*"):
for content in subfolder.glob("*"):
if "V1.2" in content.name:
shutil.move(content ,Path(subfolder,"Archive"))
然而,以下带有 rglob("*V1.2*")
、python 的代码只是在存档文件夹中创建了一个名为“Archive”的无扩展文件。这是为什么?
for file in copyPath.rglob("*V1.2*"):
shutil.move(file,Path(file.parent,"Archive"))
此致, 作为
您声明以下代码在存档文件夹中创建了一个名为“Archive”的文件:
for file in copyPath.rglob("*V1.2*"):
shutil.move(file,Path(file.parent,"Archive"))
shutil.move 仅在目录已存在的情况下将您的文件移动到该目录中。否则,它将移动(重命名)您的 文件。我猜 Path(file.parent, "Archive")
不是目录,所以每个符合条件的文件都被移动到一个名为“存档”的文件中,每个文件覆盖前一个文件。
修复应该很简单:
for file in copyPath.rglob("*V1.2*"):
target = Path(file.parent, "Archive")
if target.is_file():
raise ValueError(f"Invalid directory: {target} is a file!") # safety check to avoid overwriting files and data loss
if not target.is_dir():
target.mkdir(parents=True) # <- this should solve your problem
shutil.move(file, target)