找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3420|回复: 1

[已回复] 如何将os.walk输出完整路径并用intersection比对

2

主题

2

帖子

2

积分

贫民

积分
2
tomcloud 发表于 2017-4-23 13:23:46 | 显示全部楼层 |阅读模式
需要做两个活页夹的文件比对 但结果必须带出完整路径
一般文件比對用intersection可以解决
但无法带出完整路径



编程如下 但只能输出文件名 无法带出路径

def aaa(self):
    dira = self.lineA.text()
    dirb = self.lineB.text()

    dirafile = [dirafile for path, dirs, files in os.walk(dira) for dirafile in files]
    dirbfile = [dirbfile for path, dirs, files in os.walk(dirb) for dirbfile in files]

    dirfileok = set(dirbfile).intersection(dirafile)
    print(dirfileok)

编程如下 但输出无数据只出现set()

def aaa(self):
    dira = self.lineA.text()
    dirb = self.lineB.text()

    dirafile = [os.path.join(path, dirafile) for path, dirs, files in os.walk(dira) for dirafile in files]
    dirbfile = [os.path.join(path, dirbfile) for path, dirs, files in os.walk(dirb) for dirbfile in files]

    dirfileok = set(dirbfile).intersection(dirafile)
    print(dirfileok)


一般来说把diradirb带进来即可
但因为os.walk会遍历路径下所有文件包含下一层目录
所以无法固定使用同一个目录







回复

使用道具 举报

1

主题

2

帖子

2

积分

贫民

积分
2
hipy 发表于 2017-4-24 12:01:17 | 显示全部楼层

   dirafile = [os.path.join(path, dirafile) for path, dirs, files in os.walk(dira) for dirafile in files]
   dirbfile = [os.path.join(path, dirbfile) for path, dirs, files in os.walk(dirb) for dirbfile in files]   a和b是2个不同的目录,所以取不到交集,只对2个目录的文件交集的话用os.path.join(dir[ab]file)
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表