Найти и заменить несколько строк в файле, затем вывести на новый файл python - PullRequest
0 голосов
/ 30 ноября 2009

Я хочу создать скрипт на 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 ]

1 голос
/ 01 декабря 2009

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

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 в Python версии 2.5.

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

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

Что касается дополнительной информации с использованием csv, просьба предоставить более подробное объяснение или пример того, чего вы пытаетесь достичь.

0 голосов
/ 01 декабря 2009
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()

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...