Shutil.move不会移动文件夹,但会移动文件夹的内容

时间:2019-10-02 14:47:10

标签: python python-3.6 shutil

我正在编写一个脚本来重组大数据集,以便它与我们当前正在实现的数据库系统大部分兼容。目前,我们的大多数数据都没有以任何有意义的方式进行组织,尽管某些文件夹已经按照脚本的方式进行了标记。因此,我已经实施了一个案例来解决这个问题。

我们将此案例称为“ INFO”。在除了第一个实例的所有实例中,我的脚本都能正常工作,在顶层找到“ INFO_example [2,3,4 ....]”文件夹,并将其移至包含所有这些内容的新“ INFO”文件夹例子。但是,由于某些原因,在第一个实例“ INFO_example1”中,它会获取文件夹的内容,然后将其转储到“ INFO”中。

我已经尝试调试问题,但是看不到第一个实例与任何其他实例之间的任何区别。文件夹路径也没有任何不同。

file_path = join(self.path, file)
try:
    move(file_path, self.info_path)
except shutil.Error:
    print("Trying to move", file_path, " didn't work")

我对实际发生的事情有些困惑。

我希望“ INFO_example1”文件夹的行为与其他所有文件夹一样,并且将其移至顶层“ INFO”文件夹。

当前,其内容已移至“ INFO”,“ INFO_example1”文件夹似乎已删除。

我的打印消息也永远不会触发。

1 个答案:

答案 0 :(得分:0)

因此,问题在于shutil.move会查看“ INFO_example1”,然后尝试将其移至“ INFO”,请注意“ INFO”不存在,因此将其创建并放入“ INFO_example1”的内容”,而不是在其中创建另一个文件夹,然后将内容移动到其中。

由于脚本的性质,在尝试移动文件之前创建“ INFO”会导致更多问题,但是,如果我更新了移动“ INFO_example”文件夹的部分,则看起来像这样:

    file_path = join(self.path, file)
        try:
            if not isdir(self.info_path):
                mkdir(self.info_path)
            move(file_path, self.info_path)
        except shutil.Error:
            print("Trying to move", file_path, " didn't work")

仅在我尝试移动“ INFO_example”样式文件夹时,检查“ INFO”目录是否存在,如果不创建目录,则至少对于我自己而言,会提供预期的行为。