2015-04-22 57 views
3
import shutil 
import os 

def get_files(): 
    source = os.listdir("/output_folder/sample/cufflinks/") 
    destination = "output_folder/assemblies.txt" 
    for files in source: 
     if files.with("transcripts.gtf"): 
      shutil.move(files,destination) 

我要檢索transcripts.gtf文件從"/output_folder/sample/cufflinks/"assemblies.txt。上面的代碼是否正確。請幫助我。謝謝 !!Python腳本來檢索文件從文件夾的路徑到一個文本文件

+0

是什麼讓你覺得這是不對的?它與你期望的行爲有什麼不同? –

+0

爲什麼不測試它並告訴我們它是否按照您期望的方式工作? – ILostMySpoon

+1

你有代碼評論審查你的代碼! http://codereview.stackexchange.com/ –

回答

2

您可以使用os.walk

import os 
import shutil 
from os.path import join 

destination = "/output_folder/assemblies.txt" # Absolute path, or use join 
folder_to_look_in = "/output_folder/sample/cufflinks/" # Absolute folder path, or use join 
for _, _, files in os.walk(folder_to_look_in): 
    for file_name in files: 
     if file_name.endswith("transcripts.gtf"): 
      try: 
       # 'a' will append the data to the tail of the file 
       with open(destination, 'a') as my_super_file: 
        my_super_file.write(file_name) 
      except OSError as e: 
       print "I/O error({0}): {1}".format(e.errno, e.strerror) 
+0

我不想移動文件。文件的路徑應該放在文本文件中。 – user3351523

+0

爲如:文本文件應包含這樣/sample1/transcripts.gtf /sample2/transcripts.gtf /sample3/transcripts.gtf /sample4/transcripts.gtf /sample5/transcripts.gtf /sample6 /成績單.gtf – user3351523

+1

你走了!請下次試着自己動手,這是提高編碼技能的最佳方法! –

2

我想,我終於明白你想達到的目標。使用glob.glob()功能:

import glob 
destination = "output_folder/assemblies.txt" 
source = '/output_folder/sample/cufflinks/*/*transcripts.gtf' 
with open(destination, 'w') as f: 
    f.write('\n'.join(glob.glob(source))+'\n') 

f.write('\n'.join(glob.glob(source))+'\n')是等價的:

s = '' 
for path in glob.glob(source): 
    s += '{}\n'.format(path) 
f.write(s) 
+0

這看起來不錯。謝謝 – user3351523

+0

W將擦除文件,如果您運行腳本2次 –

+0

@ e-nouri這是正確的。如果你想追加,你可以使用''a''而不是''w''。 –

相關問題