Я пишу в текстовый файл, но он не работает должным образом, как я ожидал.Python - эффективный способ записи в файл?
Вот что у меня есть:
#!/usr/lib/env python
import re
file = open("address.txt","r")
content = file.read()
file.close()
content = content.split('LAN ')[1:]
dic = {}
for lan in content:
dic[int(lan[0])] = lan[1:]
def address(lan_index):
address = re.findall('address\s(.*?)\s',dic[lan_index])
if len(address) > 0:
print 'LAN', lan_index, ":", address[0]
else:
print 'No Address Found!'
return address[0]
ad1 = str(address(1))
new_ad = ad1
var1 = 'ad1'
filedata = None
with open('address.txt', 'r') as file :
filedata = file.read()
filedata = filedata.replace(ad1 , var1)
with open('address.txt', 'w') as file:
file.write(filedata)
вот мой текстовый файл:
#line addresses LAN 1
address 192.168.6.6
network 192.168.6.6
моя проблема, когда я хочу, чтобы заменить ad1
для var1
это обыкновение заменить только мой address
только он заменит network
а также имеют тот же IP-адрес.
Мой вывод что-то вроде этого:
адрес ad1
сеть ad1
Есть эффективный и возможный способ избежать этого и получить что-то вроде этого:
адрес ad1
сеть 192.168.6.6
Я был бы очень признателен, если это возможно. Спасибо
Прочтите файл по строкам? Только заменить строку, если содержит адрес, а не сеть? –
@ cricket_007 не плохая идея .. regex на самом деле часто медленнее, чем простые операции с строкой, если нужны только простые совпадения. преимущество регулярного выражения - гибкость и сложные шаблоны, а не скорость. – Aaron