2012-05-21 33 views
-1

我想通過一系列目錄(大約3個深度)遞歸循環。在每個目錄中都有一系列文本文件,如果行中包含特定的字符串,我想用目錄路徑替換一行文本。使用python編輯子目錄中的所有文件

/path/to/text/file/fName.txt 

如果FNAME在fName.txt文本行包含字符串「的String1」我想用「一些文本」來代替這一行+文件,其中文件路徑的最後一部分。

這似乎是應該很容易在Python中,但我似乎無法管理它。

編輯:對於寫得很差的問題抱歉,我不得不趕快進入。

這裏是我到目前爲止

import os 

for dirname, dirs, files in os.walk("~/dir1/dir2"): 
    print files 
    for fName in files: 
      fpath = os.path.join(dirname, fName) 
      print fpath 
      f = open(fpath) 
      for line in f: 
       #where I'm getting stuck 
       s = s.replace("old_txt", "new_txt") 

      #create new file and save output 

我陷入對什麼是如何取代僅基於線的剖面的整條生產線。例如,如果行是

That was a useless question, 

我似乎無法取代我想要的。我試圖做的是僅僅基於搜索'無用'來改變整條線。另外,有沒有比重寫整個文件更好的方式來實現單行?

謝謝。

+3

你嘗試過什麼?即發佈一些代碼...請參閱[pleac](http://pleac.sourceforge.net/pleac_python/directories.html)獲取文件靈感 –

回答

3

os.walk(請看例子),所有你需要

分析每個文件,with open(...) as f:,分析它,並覆蓋它(小心,測試後)與with open(..., 'w') as f:

相關問題