Я читаю текстовый файл и ищут данные по строкам, основываясь на некоторых условиях, изменяя некоторые значения в строке и записывая их обратно в другой файл. Новый файл не должен содержать старую строку. Я пробовал следующее, но это не сработало. Я думаю, что мне не хватает очень простой вещи.Заменить строку новой строкой в Python
Решение: В C++ мы можем увеличить строку, но в Python. Я не уверен, как это достичь. Итак, сейчас я пишу старую строку, чем новую. Но в новом файле я хочу только новую строку.
Пример:
M0 38 A 19 40 DATA2 L=4e-08 W=3e-07 nf=1 m=1 $X=170 $Y=140 $D=8
M0 VBN A 19 40 TEMP2 L=4e-08 W=3e-07 nf=1 m=1 $X=170 $Y=140 $D=8
Код, который я попробовал следующий:
def parsefile():
fp = open("File1", "rb+")
update_file = "File1" + "_update"
fp_latest = open(update_file, "wb+")
for line in fp:
if line.find("DATA1") == -1:
fp_latest.write(line)
if line.find("DATA1") != -1:
line = line.split()
pin_name = find_pin_order(line[1])
update_line = "DATA " + line[1] + " " + pin_name
fp_latest.write(update_line)
line = ''.join(line)
if line.find("DATA2") != -1:
line_data = line.split()
line_data[1] = "TEMP2"
line_data =' '.join(line_data)
fp_latest.write(line_data)
if line.find("DATA3") != -1:
line_data = line.split()
line_data[1] = "TEMP3"
line_data =' '.join(line_data)
fp_latest.write(line_data)
fp_latest.close()
fp.close()
Стоит отметить, что при работе с файлами в Python, то лучше использовать [ 'with' оператор] (http://www.youtube.com/watch?v=lRaKmobSXF4). –
Аналогично, если вы хотите проверить, что что-то не в строке, лучший способ сделать это - использовать 'if not 'string" in line', а не использовать 'line.find()' :. Здесь также присутствуют симптомы копирования/вставки - вы делаете то же самое с несколькими разными переменными несколько раз - вы должны извлечь эту функциональность из цикла и/или функции. –
'if line.find (« DAT1 »)! = -1:' - Вы действительно имели в виду, что это «DAT1», а не «DATA1»? и почему бы просто не использовать 'else:' вместо этого? – Vicky