Если оставлять его необязательным, то увеличивается гибкость программы, так как во время открытия файла возможно использование любой кодировки. По-моему так
Кодировки есть грабли, через которые проходят очень многоие (я в свое время очень конкретно намучился с этим, да и не один я), просто за счет того чтобы сделать его обязательным (имется ввиду убрать значение по умолчанию), то гибкость не страдает, так как можно выбрать любую, зато отпадает куча вопросов и проблем на тему "А почему у меня крякозябры показывает", айс в py3k то что для внутреннего представления выбран юникод, в 2.6 я делал всем загрузкам из файлов вручную перекодирование в юникод, получалась конкретная путаница
Чтоб не быть голословным:
Код:
......
def load(self, data, data_encoding=None):
if data_encoding is None:
data_encoding = self.defaultencoding
self.Lock.acquire()
for line in data:
self.Container.append(line.translate(None, "\r\n").decode(data_encoding, "replace"))
if self.StringVar is not None:
try:
self.StringVar.set(len(self.Container))
except RuntimeError:
pass
self.Lock.release()
......
def dump(self, outfile, data_encoding=None, remove=False):
if data_encoding is None:
data_encoding = self.defaultencoding
self.Lock.acquire()
with open(outfile, "a") as out:
for item in self.Container:
out.write("{0}\n".format(item.encode(data_encoding, "replace")))
if remove:
self.Container = []
if self.StringVar is not None:
try:
self.StringVar.set(len(self.Container))
except RuntimeError:
pass
self.Lock.release()
......
Последний раз редактировалось login999; 15.07.2009 в 12:27..