2016-11-16 2 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? Должен ли я сделать: для fpath в fichiers: для f в fpath: if os.path.isfile (f): –

+0

@ H.eyXD: вы правы! Я должен быть более осторожным, когда я копирую-вставляю код: P – inspectorG4dget

Смежные вопросы