2016-11-16 7 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

@HeyXD:そうですよ!コードをコピーして貼り付けるときは、私はもっと注意が必要です:P – inspectorG4dget

関連する問題