将目录的所有内容移动到 Python 中的另一个目录

Moving all contents of a directory to another in Python

几个小时以来,我一直在努力解决这个问题,但没有成功。我有一个目录列表,这些目录有自己的子目录和其他文件。我试图遍历所有这些并将它们的所有内容移动到特定位置。我尝试了 shutil 和 glob,但无法正常工作。我什至尝试使用 subprocess.call 运行 shell 命令,但这也没有用。我知道它不起作用,因为我无法正确应用它,但我找不到任何将目录的所有内容移动到另一个目录的解决方案。

files = glob.glob('Food101-AB/*/')
dest = 'Food-101/'

if not os.path.exists(dest):
    os.makedirs(dest)
    subprocess.call("mv Food101-AB/* Food-101/", shell=True)

    # for child in files:
    #   shutil.move(child, dest)

我正在尝试将 Food101-AB 中的所有内容移动到 Food-101

尝试将 call 函数更改为 run 以便为您的 shell 命令检索 stdoutstderrreturn code :

from subprocess import run, CalledProcessError
source_dir = "full/path/to/src/folder"
dest_dir = "full/path/to/dest/folder"
try:
    res = run(["mv", source_dir, dest_dir], check=True, capture_output=True)
except CalledProcessError as ex:
    print(ex.stdout, ex.stderr, ex.returncode)

shutil 标准库的模块是要走的路:

>>> import shutil
>>> shutil.move("Food101-AB", "Food-101")

如果您不想移动 Food101-AB 文件夹本身,请尝试使用此方法:

import shutil
import os

for i in os.listdir("Food101-AB"):
    shutil.move(os.path.join("Food101-AB", i), "Food-101")

有关move函数的更多信息: https://docs.python.org/3/library/shutil.html#shutil.move