2009-11-30 2 views
-1

Я ищу, чтобы создать скрипт python, который будет читать один исходный файл, а затем создать другой файл со строкой для имени.Найти и заменить несколько строк в файле, а затем вывести на новое имя файла python

, например

macaddress.cnf.xml содержит исходный файл

Мне нужно изменить «6000» до «6001» в нескольких местах macaddress.cnf.xml, то я хочу, чтобы вывести на 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

Вы женаты, чтобы сделать это на Python? Вы можете использовать sed для этого. –

+0

использовать sed для простой замены. Кроме этого, нет, sed не является подходящим инструментом. – ghostdog74

+0

@OP, вы должны показать примеры вашего входного файла – ghostdog74

ответ

1

Непонятно из вашего вопроса, каковы все ваши цели, но я попытаюсь обратиться к некоторым из них. Если вы хотите взять входные данные из одного файла, изменить его, а затем записать в другой файл, который вы могли бы сделать следующее:

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

# do modifications ... 

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

Примечание: Вы должны использовать from __future__ import with_statement в питона версии 2.5.

Чтобы сделать несколько замен вы можете использовать re.sub() функцию:

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

Как дополнительная информация, с помощью CSV, пожалуйста, предоставьте более подробное объяснение или пример того, что вы пытаетесь достичь.

+0

regex не нужен для его случая. – ghostdog74

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() 

Редактировать. Думаю, вам нужно прояснить вопрос. Есть ли только один выходной файл или вам нужен один файл на замену?