2009-11-30 77 views
-1

我正在尋找創建一個python腳本,它將讀取一個源文件,然後生成另一個名稱爲字符串的文件。查找並替換文件中的多個字符串,然後輸出到新文件名python

例如

macaddress.cnf.xml包含源文件

我需要macaddress.cnf.xml的多處改變「6000」到「6001」,然後我要輸出到newmacaddress.cnf.xl。

這是我

#! /usr/bin/python 
#read and write to file 
f = open(file) 
for line in f: 
    if line.contains('66001'): 
     newline = line.replace('66001', '60001') 

要添加我希望能夠有一個CSV或任何要做到這一點,並通過運行腳本,做

60002 >> macaddressfromcsv.cnf .xml 60003 >> macaddressfromcsv.cnf.xml 60004等

對不起,我對這個很新,任何幫助都會很棒。

+2

你娶了這麼做嗎?你可以使用sed來做到這一點。 – 2009-11-30 20:59:03

+0

使用sed進行簡單替換。除此之外,不,sed不是合適的工具。 – ghostdog74 2009-12-01 00:12:07

+0

@OP,你應該顯示你的輸入文件的例子 – ghostdog74 2009-12-01 00:13:29

回答

1

從你的問題中不清楚你的所有目標是什麼,但我會盡力解決其中的一些問題。如果你想利用輸入從一個文件,修改它,然後寫入到另一個文件中,你可以做以下操作:

buffer = ""; 
with open("input_file") as in: 
    buffer = in.read(); 

# do modifications ... 

with open("output_file", 'w') as out: 
    out.write(buffer); 

注意:您需要在Python 2.5版使用from __future__ import with_statement

做多的替代品,你可以實際使用re.sub()功能:

buffer = re.sub('6000', '6001', buffer) 

至於附加信息使用CSV,請提供更詳細的解釋或你想達到什麼樣的一個例子。

+0

正則表達式不是他需要的情況。 – ghostdog74 2009-12-01 00:12:49

0
data=open("input_file").read() 
outfile=open("macaddressfromcsv.cnf.xml","w") 
for i in range(6001,6010): 
    outfile.write(data.replace("6000",str(i)) 
    outfile.write("\n") # you may not need this 
outfile.close() 

編輯。我認爲你需要澄清這個問題。是否只有一個輸出文件或每個替換文件需要一個文件?

相關問題