在 Python 中,如何从集合比较中删除目录?比较 2 组目录 - 删除不匹配的文件夹

In Python, how do I delete directories from a set comparison? Comparing 2 sets of Directories - delete folders that do not match

我有一个包含新文件的目录 1 和一个包含相同文件但较旧的目录 2。我想移动目录 1 或目录 2 中不存在的任何文件夹,并且只保存与这两个位置匹配的文件:

这是我的代码:

def removeOldDirs():
    dir1 = os.listdir('/directory1')
    dir2 = os.listdir('/directory2')
    dir1 = set(dir1)
    dir2 = set(dir2)
    oldFolders = set(dir2).difference(dir1)
    os.chdir('/')
    shutil.move(oldFolders,'/old')
    print os.listdir('.')

我希望将两个目录中不匹配的文件夹名称移动到“/旧”文件目录。我收到一条错误消息 TypeError: coercing to Unicode: need string or buffer, set found coercing to Unicode: need string or buffer, set found

有没有更'pythonic'的方式来做到这一点?我应该改为进行系统调用吗?

shutil.move 接受两个参数:源 file/directory 和目标 file/directory。 如果您有 files/directories 的列表(或您的案例集),您可以这样做:

for od in oldfolders:
   shutil.move(od,"/old")