Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 21, 2010 15:44:59

Atner
От:
Зарегистрирован: 2010-01-21
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

проблема с проверкой

Всем привет. Возникла такая проблема:
С помощью 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”
###########################
Подправьте пожалуйста где что не так,заранее спс.



Офлайн

#2 Янв. 21, 2010 15:55:25

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

проблема с проверкой

ну во-первых, отступы неправильно расставлены)
во-вторых, считывать весь файл в память - моветон.

Давно я делал нечто похожее, тока у меня файл был бинарный, я его сортировал вставкой, чтобы потом бинарным поиском искать… (правда у меня довольно редко писало, чаще искало). А у вас когда файл разрастется до приличных размеров все начнет прилично тормозить. А в вашем способе еще и жрать кучу памяти.



Отредактировано (Янв. 21, 2010 15:59:00)

Офлайн

#3 Янв. 21, 2010 16:05:53

Atner
От:
Зарегистрирован: 2010-01-21
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

проблема с проверкой

Спасибо за ответ. Можно по подробней с моветон.Думаю с памятью проблем не будет,т.к. город не такой уж большой и все станции не предполагаться. обходить поиском google не нашел. С пробелами что делать? Тож чет не пойму ни как. не всегда срабатывает.Вроде все так же делаю.Хотя может уже путать начал, у всех по своему делается. Можно примерами подкрепить.



Отредактировано (Янв. 21, 2010 16:08:16)

Офлайн

#4 Янв. 21, 2010 17:01:10

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

проблема с проверкой

раз уж вы все-равно читаете весь файл, то читайте по строке и сравнивайте значения.

for str in file.xreadlines():
if location in str:
print 'Есть уже!'
else:
file.write(location)
print 'Записано успешно!'
Ну что-то подобное…



Отредактировано (Янв. 21, 2010 17:02:18)

Офлайн

#5 Янв. 22, 2010 03:19:47

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

проблема с проверкой

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"



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version