Найти - Пользователи
Полная версия: Хочу избавиться от кучи if'ов!
Начало » Python для экспертов » Хочу избавиться от кучи if'ов!
1 2
proDiva
Имеется фрагмент кода:

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”

Как бы сделать покрасивше?)))
Александр Кошелев
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()
?
slivlen
Я бы вообще сменил формат конфига на что-то вроде такого:
dbname='db'
host='hostname'
user='username'
password='megapassword'
а данные после разбора хранил бы в словаре(dict), чтоб не было зависимости от последовательности строк.
pythonwin
proDiva посмотри питоновский пакет configobj
slav0nic
обычно делается config.py где объявляются перменные, после чего import config;print config.var1 и тп
нафига парсить-то%)?
xonix
Да, написать так на питоне еще нужно постараться :-)
А как-то так разве нельзя?

try:
    db, host, user, password = open("connect.txt").read().split()
except ValueError:
    print 'Wrong connect file format!'
proDiva
slav0nic
обычно делается config.py где объявляются перменные, после чего import config;print config.var1 и тп
нафига парсить-то%)?
Если сделать config.py, то при создании exe-шника он в него включится. А у меня пользователи будут подключаться к разным базам, поэтому хочу выделить файл подключения.
proDiva
xonix
Именно такого решения и ждала, спасибо!
OlDer
proDiva
xonix
Именно такого решения и ждала, спасибо!
Я бы все-таки посоветовал использовать хотя бы стандартный модуль ConfigParser. Рано или поздно понадобится что-то большее чем просто файл с четырьмя строчками. Да и пользователям легче будет понимать структуру нормального ini-файла, вроде такого:
[Database]
host = dbhost
port = port
proDiva
OlDer
Это тоже хороший вариант, может и переделаю))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB