python os.rename目录不为空

时间:2018-09-08 09:51:12

标签: python python-os

我正在尝试使用Python mv test-dir/* ./。我编写了以下代码,但抛出了OSError: [Errno 66] Directory not empty:

import os    
os.rename(
    os.getcwd() + '/test-dir',
    os.path.abspath(os.path.expanduser('.')))

2 个答案:

答案 0 :(得分:0)

您要告诉操作系统移动test-dir,而不是其内容。它通常会替换目标(在这种情况下为.),但是该目标显然不是空的,因此隐式rmdir会失败。即使不为空,也可能无法删除或替换.名称。

外壳*是一个glob,它将扩展到test-dir中的每件事物,您可以分别移动它们。但是,您希望将其名称传输到目标目录,即test-dir/foobar./foobaros.path.basename可以帮助您提取该部分。

答案 1 :(得分:0)

您可能想使用shutil.move()将文件从一个目录迭代地移动到另一个目录。
例如,

import os
import shutil

from_dir = os.path.join(os.getcwd(),"test-dir")
to_dir = os.path.abspath(os.path.expanduser('.'))

for file in os.listdir(from_dir):
    shutil.move(os.path.join(from_dir, file), to_dir)