如果文件与另一个文件夹匹配,如何从一个文件夹返回所有文件名?

时间:2019-10-28 16:45:11

标签: python

变量

first= 'C:/Users/shady/Desktop/test folder/check'

second = 'C:/Users/shady/Desktop/test folder/checked'

first内有一个文件名

test 1 ed.docx

second内部,有一个相似的文件名,具有不同的扩展名,以及一个额外的文件:

test 1.jpg

test 2.jpg

问题

通过查看我的代码,我需要设置choices以便从second返回我所有文件,但是如果两个文件夹具有相似的文件名(不包括扩展名,但包括ed ),则不显示该文件名。

我当前的代码

import os
import glob


first= 'C:/Users/shady/Desktop/test folder/check'

second = 'C:/Users/shady/Desktop/test folder/checked'

choices = os.listdir(second)
print(choices)

当前输出

['test 1.jpg', 'test 2.jpg']

所需的输出

['test 2.jpg']

这是输出,因为文件名(test 2 ed.docx)在first中不存在。

test 1.jpg存在于first中,因为test 1 ed.docx是很好的匹配。

这是我要去的地方

import os

Username = "ed"

first = 'C:/Users/shady/Desktop/test folder/check/'
second = 'C:/Users/shady/Desktop/test folder/checked/'

choices = os.listdir(second)

list = []
for x in choices:
    x = (x.strip('.JPG') + ' ' + Username + '.docx')

但不确定此代码所指向的方向是否正确。

1 个答案:

答案 0 :(得分:0)

尝试一下:

import os

Username = "ed"

first = 'C:/Users/shady/Desktop/test folder/check/'
second = 'C:/Users/shady/Desktop/test folder/checked/'


one = [f for f in os.listdir(first) if isfile(join(first, f))]
two = [f for f in os.listdir(second) if isfile(join(second, f))]


for x in [one]:
    x1 = [y.rstrip(' ' + Username + '.docx')+'.jpg' for y in x]
    choices = (set(two).difference(x1)) # returns all files that are not the same based on 'x1'