在Python中把一个目录的所有内容移动到另一个目录下

问题描述 投票:0回答:1

我一直在试图弄清楚这个问题,但没有任何运气。 我有一个目录列表,其中有子目录和其他自己的文件。 我试图遍历所有的目录,并将它们的内容都移动到一个特定的位置。 我试过shutil和glob,但我不能让它工作。 我甚至尝试用以下方法运行shell命令 subprocess.call 而这也没有奏效。 我理解是因为我不能正确应用它,但我找不到任何解决方案,可以将一个目录的所有内容移动到另一个目录。

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中。

python glob shutil
1个回答
2
投票

我想在所有的目录中穿越,并将其移动到 ... 模块是最好的选择。

>>> 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.org3libraryshutil.html#shutil.move。


1
投票

尝试改变 call 功能,以 run 为了检索 stdout, stderrreturn code 为你的shell命令。

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)

© www.soinside.com 2019 - 2024. All rights reserved.