2014-02-09 30 views
0

所以,我有各种txt文件,充满文字组织为列表,并且我想创建一个文件,其中包含每个txt文件的元素,这些文件也位于另一个txt文件中。我试过这个:与Python的巧合列表

cadena = [] 
    cadena_dos = [] 
    seccion = "" 
    filename_LISTA = "LISTA_FINAL.txt" 
    linea_vacia = "\n" 
    espaciador = "----------------------------------------------\n" 
    cacho = "  " 
    repeticiones = [] 
    cachito = " | " 
    inicio = "Is also in " 
    espacio = ", " 

    fe = open(filename_LISTA, "w") 

    nombres = ["ONE", "TWO", ... "ELEVEN"] 

    for i in range (0, len(nombres)): 

     filename = nombres[i] 
     filename_a = filename + ".txt" 
     filename_b = filename + "\n" 

     linea = str(cacho) 
     fe.write(linea) 
     linea = str(nombres[i]) 
     fe.write(linea) 
     linea = str(linea_vacia) 
     fe.write(linea) 
     linea = str(linea_vacia) 
     fe.write(linea) 

     with open(filename_a) as f: 
      data = f.readlines() 


      for n, line in enumerate(data, 1): 
       cadena.insert(n-1, line.rstrip()) 
       normal = str(cadena [n-1]) 


       for p in range (1, len(nombres)): 

        filename_dos = nombres[p] 
        filename_a_dos = filename + ".txt" 

        if filename_a != filename_a_dos: 


         with open(filename_a_dos) as t: 
          data = t.readlines() 

         for r, line in enumerate(data, 1):  
          cadena_dos.insert(n-1, line.rstrip()) 
          normal_dos = str(cadena_dos [n-1]) 


          if normal == normal_dos: 
           repeticiones.append(filename_dos) 

      if len(repeticiones) > 0: 

        linea = normal 
        fe.write(linea) 
        linea = str(cacho) 
        fe.write(linea) 
        linea = str(cachito) 
        fe.write(linea) 
        linea = str(inicio) 
        fe.write(linea) 
        for cont in range (0, len(repeticiones)): 

         linea = str(repeticiones[cont]) 
         print repeticiones[cont] 
         fe.write(linea) 
         if cont < len(repeticiones): 
          linea = str(espacio) 
          fe.write(linea) 
         else: 
          linea = str(linea_vacia) 
          fe.write(linea) 

       else: 
        linea = str(linea_vacia) 
        fe.write(linea) 

       repeticiones = [] 


      linea = str(linea_vacia) 
      fe.write(linea) 
      linea = str(espaciador) 
      fe.write(linea) 
      linea = str(linea_vacia) 
      fe.write(linea) 

    fe.close() 

但是没有做任何事。问题是,如果我啦免费统计行

"filename_a != filename_a_dos:" 

程序启动到功能,但开始找到相同的txt文件中的巧合。任何人都可以帮助这个权利?

回答

0

你正在使用外部循环的filename而不是内部循环的filename_dosfilename_a_dos值。这意味着filename_a_dos将始终与filename_a相同,因为它们都是filename + ".txt"

通过使用itertools.combinations,您可以进一步改进循环,而不是在文件名列表上循环两次,但这是一个较大的更改,与您当前的问题没有直接关系。

+0

谢谢!没有想到这一点。按照您的建议,我会尝试使用itertools.combitions,似乎是一种更好的方式 – user3288485

0

那是因为filename_a和filename_a_dos的值总是相同的,所以里面

filename_a内容= filename_a_dos:

不会工作。

我觉得你可能意味着

filename_a_dos = filename_dos + “.TXT”