2013-04-16 13 views
1

我想運行一個文件夾中的所有文件的功能,並創建新的文件。我已經把一個文件的代碼放在波紋管中。如果您能幫助我,我將不勝感激。如何讀取一個文件夾中的所有文件,並在python中對其應用函數?

def newfield2(infile,outfile): 
    output = ["%s\t%s" %(item.strip(),2) for item in infile] 
    outfile.write("\n".join(output)) 
    outfile.close() 
    return outfile 


infile = open("E:/SAGA/data/2006last/325125401.all","r") 
outfile = open("E:/SAGA/data/2006last/325125401_edit.all","r") 

我想更改的所有文件「E:/ SAGA /數據/ 2006last /」文件夾,並編輯擴展創建新的文件。

+0

能否請您修正縮進,我不知道whethere,你已經做了正確與否 – jamylak

+0

對不起你這是什麼意思縮進? –

+0

左側每行的空格數 – jamylak

回答

0
import os 

def apply_to_all_files: 
    for sub_path in os.listdir(path): 
     next_path = os.path.join(path, sub_path) 
     if os.path.isfile(next_path): 
      infile = open(next_path,"r") 
      outfile = open(next_path + '.out', "w") 
      newfield2(infile, outfile) 
3

使用os.listdir()列出目錄中的所有文件。該函數僅返回文件名,而不是完整路徑。該os.path module提供的工具根據需要構建的文件名:

import os 

folder = 'E:/SAGA/data/2006last' 

for filename in os.listdir(folder): 
    infilename = os.path.join(folder, filename) 
    if not os.path.isfile(infilename): continue 

    base, extension = os.path.splitext(filename) 
    infile = open(infilename, 'r') 
    outfile = open(os.path.join(folder, '{}_edit.{}'.format(base, extension)), 'w') 
    newfield2(infile, outfile) 
+0

outfile應該以'w'模式打開。 – FrostNovaZzz

+0

@FrostNovaZzz:杜..謝謝。 –

+0

非常感謝您的幫助。請您解釋一下「基礎和擴展」和splitext? –

相關問題