2016-03-02 121 views
0

所以我正在通过两个目录。对于找到的每个文件,我都打印他们的名字。我想要做的是做一个比较,但是我不能提前,因为我对if语句有麻烦。假设我在这两个目录中都有一个名为some的txt文件。如果在文件名中找到some,我找到了打印。这是单独工作。我的问题是and运营商。这两个文件都被命名为"some.txt",但我什么也没得到。就像我说的,如果我摆脱了and运营商,它就可以工作。比较不同目录中的两个文件的名称

def compare(directory1, directory2): 
    for file1, file2 in zip(os.listdir(directory1),(os.listdir(directory2))): 
     if "some" in file1 and "some" in file2: 
      print("found") 
+0

你可以添加文件的名称在两个目录? – GLaDOS

+1

请勿使用“zip”。使用'zip',你只会比较'directory1'中的'j-th'文件和'directory2'中的'j-th'文件。 – gtlambert

+1

may filecmp.cmpfiles()对你有用吗? – MaxU

回答

1

在这种情况下不要使用拉链。你这样做的方式,你只是比较目录列表中具有相同索引的file1和file2。

比较所有可能的配对,只要做到这一点:

def compare(directory1, directory2): 
    for file1 in os.listdir(directory1): 
     for file2 in os.listdir(directory2): 
      if "some" in file1 and "some" in file2: 
       print("found") 
1

这是一个办法做到这一点,我相信:

def compare(directory1, directory2): 
dir1 = {file for file in os.listdir(directory1)} 
dir2 = {file for file in os.listdir(directory2)} 
dir_common = dir1.union(dir2) 
for file in dir_common: 
    if "some" in file: 
     print("found") 
相关问题