我一直在试图弄清楚这个问题,但没有任何运气。 我有一个目录列表,其中有子目录和其他自己的文件。 我试图遍历所有的目录,并将它们的内容都移动到一个特定的位置。 我试过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中。
我想在所有的目录中穿越,并将其移动到 ... 模块是最好的选择。
>>> 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。
尝试改变 call
功能,以 run
为了检索 stdout
, stderr
和 return 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)