Форум сайта python.su
Файл А - это шаблон с %s. На сколько плохо не закрывать файлы?
a = “…”
b = “…”
open('B.xml','w').write(open('A.xml','r').read() % (a, b))
Офлайн
Я думаю, что так писать в принципе нехорошо.
Код абсолютно нечитабельный.
Офлайн
Предполагаю так:
Переменные не создаются и объекты файлов будут удалены, после выполнения. А перед этим файлы будут автоматом закрыты. Поэтому нормально.
FerromanА по моему, красиво. Только пробелов поставить, чтоб зрительно отделить операции. %)
Я думаю, что так писать в принципе нехорошо.
Код абсолютно нечитабельный.
Отредактировано (Июль 28, 2008 05:13:35)
Офлайн
вот интересная статья о том как хорошо и как плохо
http://www.fantascienza.net/leonardo/ar/python_best_practices.html
Офлайн
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)
Офлайн
Если не хочется плодить новые сущности можно по-другому.
Я бы скорее сделал или как Kravejs, или, как минимум, вот так:
open('B.xml','w').\
write(open('A.xml','r').\
read() % (a, b))
Офлайн
@Ferroman: хез что называть читабельным, я такой код вполне нормально читаю, правда так не попишешь если ты читаешь из файла. но вообще понимать под нечитабельностью.
@Kravejs: имхо, если Вам достаточно хорошо читаеться первый код - то можно так и оставить (т.к. такие места бывает довольно часто приходиться использовать, всм открытие файла, для того что бы сразу записать и закрывать). но если одной строкой неудобно читаеться, то последний способо, предложенный Ferroman'ом тоже вполне ничего, и даже более читабелен. А писать кучу совершенно ненужного кода, только что бы читалось совсем уж легко….. ну хез, может лучше задокументировать, а то уж чтото совсем по жавовски получаеться.
Офлайн
Ну а для чего 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)
Офлайн
Да, так лучше - можно прокомментировать код построчно (чего нельзя в моём примере), и не надо плодить переменных.
Офлайн
ага… вот только надо добавлять что в 2.3 этого нету =)
Офлайн