2014-02-09 40 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」