在python中如何使用ignore模式移动树

2024-06-02 10:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

和shutil.copytree公司我可以将一个包含文件和文件夹的整个目录复制到其内部的文件夹中,同时忽略某些文件夹和其中的内容。在

source = htpc.root
destination = os.path.join(htpc.root, "old")

shutil.copytree(source, destination, ignore=shutil.ignore_patterns('userdata', 'old'))

有没有一种方法可以做到这一点,除了移动而不是复制,这样我就只剩下userdata和old在根目录中,所有旧文件和文件夹都在old中。任何帮助都很好。谢谢


Tags: 文件目录文件夹source内容os公司root
1条回答
网友
1楼 · 发布于 2024-06-02 10:28:42

shutil模块不提供该功能。在

您可以在文件中看到copytree()函数和其他函数:shutil.py。在

可能位于:/usr/local/python2.6/shutil.py

有9个函数,shutil pydoc。在

因为copytree已经非常接近您的需要,所以我将copytree()克隆到一个新函数,然后将其调整为move而不是copy。在

为此:

在系统上查找shutil.py,并在文本编辑器/IDE中打开。在

找到下面这句话:

def copytree(src, dst, symlinks=False, ignore=None):

将所有内容从这里复制到copytree函数的末尾。在

然后将其粘贴到代码中,并将其重命名为def moveWithIgnore(src, ...或{}。在

原始copytree()函数顶部的注释说copy2()执行“工作”。在shutils.py中,可以看到它以(src, dst)作为参数。在

在航天飞机中还有move()函数,它也采用(src, dst)。在新的moveWithIgnore函数中,用copy2交换move是安全的。在

原始的copytree()函数使用递归(它调用自己)。请确保更新新函数中的代码行,以便它调用自己而不是copyretree。在

我相信你可以从这里拿走:-)

相关问题 更多 >