2016-11-16 93 views
1

我有比如這個代碼部分:如何用python 35來複制和複製幾個文件?

fichiers=glob.glob('/path/*.file') 
for f in fichiers: 
    if os.path.isfile(f): 
     fichier = open(f,'r') 
     for l in fichier: 
      m = regex.match(l) 
      if m: 
       print('%s/ EMO /%s'%(m.group(1),m.group(3))) 
      #here I want to write this modified line 
      else: 
       #write line non modified 
     fichier.close() 

而且我想,而不是在外殼的打印效果,替換用新名稱或在新目錄中的文件複製應用到每一行的所有行(肯定不會犯錯誤)。 你有什麼想法教我如何做到這一點?

回答

1

這真的很簡單:您只需要定義輸出目錄並在該目錄中打開一個新文件,以便每次打開讀取的文件時寫入。看看這個:

import glob 
import os 

outdirpath = "/path/to/output/directory" 

for fpath in glob.glob('/path/*.file'): 
    if not os.path.isfile(fpath): continue 
    with open(fpath) as fichier, open(os.path.join(outdirpath, os.path.basename(fpath)), 'w') as outfile: 
     for line in fichier: 
      m = regex.match(line) 
      if m: 
       outfile.write('%s/ EMO /%s'%(m.group(1),m.group(3))) 
      else: 
       outfile.write(line) 
+0

好的答案,但'f'沒有定義。 –

+0

謝謝,但... f是fpath中的文件?我應該這樣做: 在fichiers中的fpath: fpath中的f: if os.path.isfile(f): –

+0

@ H.eyXD:你是對的!當我複製粘貼代碼時,我應該更加小心:P – inspectorG4dget