Atner
Янв. 21, 2010 15:44:59
Всем привет. Возникла такая проблема:
С помощью gsm_location получаем данные такого вида(132,123,132,133)
Нужно из чтоб программа(в будущем) проверила в текстовом файле(location.txt) есть ли эти строки, если есть: то вывела бы (уже есть), если нет: дописала бы в файл.
Скрипт у меня получается такого вида: (см. ниже)но не работает.( не проверяет)начинает сразу else
###########################
obj=location.gsm_location()
def writ():
file=open('e:/location.txt','a')
file.write(str(obj)+u“\n”)
file.close()
def info():
file=open('e:/location.txt','r')
locat=file.readlines()
loca=tuple(locat)
file.close()
if obj in loca:
print “uzhe est”
else: writ()
print “uspeshno zapisano”
###########################
Подправьте пожалуйста где что не так,заранее спс.
Zubchick
Янв. 21, 2010 15:55:25
ну во-первых, отступы неправильно расставлены)
во-вторых, считывать весь файл в память - моветон.
Давно я делал нечто похожее, тока у меня файл был бинарный, я его сортировал вставкой, чтобы потом бинарным поиском искать… (правда у меня довольно редко писало, чаще искало). А у вас когда файл разрастется до приличных размеров все начнет прилично тормозить. А в вашем способе еще и жрать кучу памяти.
Atner
Янв. 21, 2010 16:05:53
Спасибо за ответ. Можно по подробней с моветон.Думаю с памятью проблем не будет,т.к. город не такой уж большой и все станции не предполагаться. обходить поиском google не нашел. С пробелами что делать? Тож чет не пойму ни как. не всегда срабатывает.Вроде все так же делаю.Хотя может уже путать начал, у всех по своему делается. Можно примерами подкрепить.
Zubchick
Янв. 21, 2010 17:01:10
раз уж вы все-равно читаете весь файл, то читайте по строке и сравнивайте значения.
for str in file.xreadlines():
if location in str:
print 'Есть уже!'
else:
file.write(location)
print 'Записано успешно!'
Ну что-то подобное…
pasaranax
Янв. 22, 2010 03:19:47
obj=location.gsm_location()
def info():
reader = open('e:/location.txt', 'r')
writer = open('e:/location.txt', 'a')
if obj[3] in reader:
print "uzhe est"
else:
writer.write(str(obj) + "\n")
print "uspeshno zapisano"