Уведомления

Группа в Telegram: присоединиться | Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Март 5, 2007 15:59:50

proDiva
От:
Зарегистрирован: 2007-02-15
Сообщения: 244
Репутация: +  0  -
Профиль   Отправить e-mail  

Хочу избавиться от кучи if'ов!

Имеется фрагмент кода:

file_con=open(“./connect.txt”, ‘r’)
sss=“”.join(file_con.readlines())
i=1
for x in sss.split('\n'):
if i == 1:
db=x
i+=1
elif i == 2:
host=x
i+=1
elif i == 3:
user=x
i+=1
else:
password=x
i+=1

в файлике лежат данные для подключения:
“db
host
user
password”

Как бы сделать покрасивше?)))



Офлайн

#2 Март 5, 2007 16:06:40

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Хочу избавиться от кучи if'ов!

file_con=open("./connect.txt", 'r')
db= file_con.readline()
host=file_con.readline()
user=file_con.readline()
password=file_con.readline()
file_con.close()
?



Офлайн

#3 Март 5, 2007 16:09:26

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Хочу избавиться от кучи if'ов!

Я бы вообще сменил формат конфига на что-то вроде такого:
dbname='db'
host='hostname'
user='username'
password='megapassword'
а данные после разбора хранил бы в словаре(dict), чтоб не было зависимости от последовательности строк.



Офлайн

#4 Март 5, 2007 16:16:06

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

Хочу избавиться от кучи if'ов!

proDiva посмотри питоновский пакет configobj



Офлайн

#5 Март 5, 2007 22:28:29

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2179
Репутация: +  36  -
Профиль   Отправить e-mail  

Хочу избавиться от кучи if'ов!

обычно делается config.py где объявляются перменные, после чего import config;print config.var1 и тп
нафига парсить-то%)?

Офлайн

#6 Март 6, 2007 01:15:10

xonix
От:
Зарегистрирован: 2006-12-31
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Хочу избавиться от кучи if'ов!

Да, написать так на питоне еще нужно постараться :-)
А как-то так разве нельзя?

try:
    db, host, user, password = open("connect.txt").read().split()
except ValueError:
    print 'Wrong connect file format!'



Офлайн

#7 Март 6, 2007 08:17:42

proDiva
От:
Зарегистрирован: 2007-02-15
Сообщения: 244
Репутация: +  0  -
Профиль   Отправить e-mail  

Хочу избавиться от кучи if'ов!

slav0nic
обычно делается config.py где объявляются перменные, после чего import config;print config.var1 и тп
нафига парсить-то%)?
Если сделать config.py, то при создании exe-шника он в него включится. А у меня пользователи будут подключаться к разным базам, поэтому хочу выделить файл подключения.



Отредактировано (Март 6, 2007 08:31:52)

Офлайн

#8 Март 6, 2007 08:21:37

proDiva
От:
Зарегистрирован: 2007-02-15
Сообщения: 244
Репутация: +  0  -
Профиль   Отправить e-mail  

Хочу избавиться от кучи if'ов!

xonix
Именно такого решения и ждала, спасибо!



Офлайн

#9 Март 6, 2007 15:47:37

OlDer
От:
Зарегистрирован: 2006-07-19
Сообщения: 133
Репутация: +  0  -
Профиль   Отправить e-mail  

Хочу избавиться от кучи if'ов!

proDiva
xonix
Именно такого решения и ждала, спасибо!
Я бы все-таки посоветовал использовать хотя бы стандартный модуль ConfigParser. Рано или поздно понадобится что-то большее чем просто файл с четырьмя строчками. Да и пользователям легче будет понимать структуру нормального ini-файла, вроде такого:
[Database]
host = dbhost
port = port



Офлайн

#10 Март 7, 2007 08:43:30

proDiva
От:
Зарегистрирован: 2007-02-15
Сообщения: 244
Репутация: +  0  -
Профиль   Отправить e-mail  

Хочу избавиться от кучи if'ов!

OlDer
Это тоже хороший вариант, может и переделаю))



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version