2014-10-29 208 views
0

我試圖從多個文本文件中創建一個文件我跨越多個文件夾。這是我的代碼拼接。它的工作原理只有在程序文件被放置在每個文件夾中:通過多個文件夾連接多個文件

 import os 

     file_list = [each for each in cur_folder if each.endswith(".txt")] 
     print file_list 

     align_file = open("all_the_files.txt","w") 

     seq_list = [] 

     for each_file in file_list: 
       f_o = open(file_path,"r") 
       seq = (f_o.read().replace("\n","")) 
       lnth = len(seq) 
       wholeseq = ">"+each_file+" | "+str(lnth)+" nt\n"+seq+"\n" 
       align_file.write(wholeseq) 
       print "done" 

現在,我嘗試過編輯,以確保它在整個Data文件夾會自動運行,然後進入子目錄並連接所有文件有沒有我將程序文件粘貼到每個文件夾中。這是編輯。

import os 

    dir_folder = os.listdir("C:\Users\GAMER\Desktop\Data") 

    for each in dir_folder: 
      cur_folder = os.listdir("C:\\Users\\GAMER\\Desktop\\Data\\"+each) 
      file_list = [] 

      file_list = [each for each in cur_folder if each.endswith(".txt")] 
      print file_list 

      align_file = open("all_the_files.txt","w") 

      seq_list = [] 

      for each_file in file_list: 

       f_o = open(file_path,"r") 
       seq = (f_o.read().replace("\n","")) 
       lnth = len(seq) 
       wholeseq = ">"+each_file+" | "+str(lnth)+" nt\n"+seq+"\n" 
       align_file.write(wholeseq) 
       print "done" , cur_folder 

然而,當我運行它,我得到的文件夾說沒有這樣的文件存在的文件的錯誤。我似乎明白爲什麼,特別是因爲它命名了不是「硬編碼」的文件。任何幫助將不勝感激。

如果代碼看起來很醜,可隨意提出更好的方法來實現它。

+0

看看[os.walk(https://docs.python.org/2/library/os.html#os.walk) – 2014-10-29 17:04:34

+0

只是確保你知道你正在重塑車輪:[貓](https://en.wikipedia.org/wiki/Cat_%28Unix%29) – goncalopp 2014-10-29 17:05:40

+2

@goncalopp貓是unix - 他的文件路徑顯示他在Windows上。 – furkle 2014-10-29 17:06:59

回答

2

傑米是正確的 - os.walk很可能是你需要的功能。

一個例子根據你的使用情況:

for root, dirs, files in os.walk(r"C:\Users\GAMER\Desktop\Data"): 
    for f in files: 
     if f.endswith('.txt'): 
      print(f) 

這將每個文件夾內os.walk傳遞的根目錄內打印每一個文件的名稱,只要文件名以.txt結束。

Python的文檔是在這裏:https://docs.python.org/2/library/os.html#os.walk