2014-09-20 47 views
0

我有以下文件,我想更換#sys.path.insert與sys.path中替換行的文檔中(0,os.path.abspath則( '')) 。延伸([ 'PATH1', 'PATH2'])與Python

import sys 
import os 

# If extensions (or modules to document with autodoc) are in another directory, 
# add these directories to sys.path here. If the directory is relative to the 
# documentation root, use os.path.abspath to make it absolute, like shown here. 
#sys.path.insert(0, os.path.abspath('.')) 

# -- General configuration ------------------------------------------------ 

但是,下面的代碼不改變線。

with open(os.path.join(conf_py_path, "conf.py"), 'r+') as cnfpy: 
    for line in cnfpy: 
     line.replace("#sys.path.insert(0, os.path.abspath('.')))", 
        "sys.path.extend(%s)\n" %src_paths) 
     cnfpy.write(line) 

這怎麼可能取代線?

+3

http://stackoverflow.com/questions/9189172/python-string-replace – Evert 2014-09-20 08:17:32

+0

問題可以在不打開一個文件來證明。請努力創造一個最小的例子。 – 2014-09-20 08:19:11

+0

我們在這裏有兩個問題:1.不保存'line.replace()'的結果,2.沒有正確讀寫以'r +'模式打開的文件。 – 2014-09-20 13:39:49

回答

1

嘗試fileinput到更改文件中的就地字符串:

import fileinput 
for line in fileinput.input(filename, inplace=True): 
    print(line.replace(string_to_replace, new_string)) 
+0

謝謝,我不得不做* print line.replace(...,...),* – user977828 2014-09-20 10:06:10

+0

@ user977828,對。我編輯了答案。 – 2014-09-20 16:57:05