Уведомления

Группа в Telegram: @pythonsu

#1 Июль 28, 2008 00:13:00

Kravejs
От:
Зарегистрирован: 2008-07-27
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Хорошо-ли так работать с файлами?

Файл А - это шаблон с %s. На сколько плохо не закрывать файлы?

a = “…”
b = “…”

open('B.xml','w').write(open('A.xml','r').read() % (a, b))



Офлайн

#2 Июль 28, 2008 01:42:24

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Хорошо-ли так работать с файлами?

Я думаю, что так писать в принципе нехорошо.
Код абсолютно нечитабельный.

Офлайн

#3 Июль 28, 2008 05:06:38

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Хорошо-ли так работать с файлами?

Предполагаю так:
Переменные не создаются и объекты файлов будут удалены, после выполнения. А перед этим файлы будут автоматом закрыты. Поэтому нормально.

Ferroman
Я думаю, что так писать в принципе нехорошо.
Код абсолютно нечитабельный.
А по моему, красиво. Только пробелов поставить, чтоб зрительно отделить операции. %)
Плохо тут имхо, что в случае возникновения исключения, его трудно будет обработать (сразу так и не поймешь - какой именно файл его вызвал).



Отредактировано (Июль 28, 2008 05:13:35)

Офлайн

#4 Июль 28, 2008 07:52:16

evgenyl
От:
Зарегистрирован: 2008-07-22
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

Хорошо-ли так работать с файлами?

вот интересная статья о том как хорошо и как плохо
http://www.fantascienza.net/leonardo/ar/python_best_practices.html



Офлайн

#5 Июль 28, 2008 08:17:13

Kravejs
От:
Зарегистрирован: 2008-07-27
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Хорошо-ли так работать с файлами?

Kravejs
Файл А - это шаблон с %s. На сколько плохо не закрывать файлы?

a = “…”
b = “…”

open('B.xml','w').write(open('A.xml','r').read() % (a, b))
Можно и так:

template = open('A.xml','r').read()
out_file = template % (a, b)
open('B.xml','w').write(out_file)
Здесь мы создаём две лишних переменных, но имеем возможность точнее отловить ошибку.

Хотя для меня достаточно понять что что-то не так с обработкой шаблона.



Офлайн

#6 Июль 28, 2008 11:55:42

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Хорошо-ли так работать с файлами?

Если не хочется плодить новые сущности можно по-другому.
Я бы скорее сделал или как Kravejs, или, как минимум, вот так:

open('B.xml','w').\  
write(open('A.xml','r').\
read() % (a, b))
Хотя так мне тоже не очень нравится.

Офлайн

#7 Июль 28, 2008 14:12:04

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

Хорошо-ли так работать с файлами?

@Ferroman: хез что называть читабельным, я такой код вполне нормально читаю, правда так не попишешь если ты читаешь из файла. но вообще понимать под нечитабельностью.
@Kravejs: имхо, если Вам достаточно хорошо читаеться первый код - то можно так и оставить (т.к. такие места бывает довольно часто приходиться использовать, всм открытие файла, для того что бы сразу записать и закрывать). но если одной строкой неудобно читаеться, то последний способо, предложенный Ferroman'ом тоже вполне ничего, и даже более читабелен. А писать кучу совершенно ненужного кода, только что бы читалось совсем уж легко….. ну хез, может лучше задокументировать, а то уж чтото совсем по жавовски получаеться.



Офлайн

#8 Июль 28, 2008 14:43:34

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

Хорошо-ли так работать с файлами?

Ну а для чего with создан, чесслова?

with open("A.txt") as in:
with open('B.txt', 'w') as out:
out.write(in.read() %(a, b))



Отредактировано (Июль 28, 2008 14:46:59)

Офлайн

#9 Июль 28, 2008 14:47:27

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Хорошо-ли так работать с файлами?

Да, так лучше - можно прокомментировать код построчно (чего нельзя в моём примере), и не надо плодить переменных.

Офлайн

#10 Июль 28, 2008 15:21:22

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

Хорошо-ли так работать с файлами?

ага… вот только надо добавлять что в 2.3 этого нету =)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version