Python » Страница 718
-Программирование на Python
Вечер добрый, господа.
Помогите мне пожалуйста решить проблему.
Я решил написать простенький блокнот на Питоне. В моем распоряжении Nokia 5530xm, на которой стоит Python 1.4.5, но пишу в основном на компе.
В данный момент программа такая:
ru=lambda x: x.decode('utf-8')
import appuifw, os, e32
appuifw.app.title = u"PPad"
appuifw.app.screen = "large"
#Объявляем функцию выхода из программы
def quit():
if appuifw.query(ru("Хотите выйти?"), "query") == 1: appuifw.app.set_exit()
appuifw.app.exit_key_handler=quit
#Функция очистки экрана/создания нового документа
def ClearDoc():
appuifw.app.body.clear()
appuifw.app.body.set_pos(0)
#Функция сохранения документа
def SaveDoc():
filename = appuifw.query(ru("Введите название файла"), "text")
if filename:
fullpath = str(filename) + ".txt"
fullpath = "c:\\" + fullpath
if os.path.exists(fullpath) == 0:
filewrite = open(fullpath, 'w')
content = Text.get()
filewrite.writelines(content.encode("UTF-8"))
filewrite.close()
appuifw.note(ru("Файл " + fullpath + " сохранен!"), "info")
elif os.path.exists(fullpath) == 1:
rewritefile = appuifw.query(ru("Файл уже существует! Заменить?"), "query")
if rewritefile == 1:
filewrite = open(fullpath, 'w')
content = Text.get()
encontent = content.encode("UTF-8")
filewrite.write(encontent)
filewrite.close()
appuifw.note(ru("Файл " + fullpath + " сохранен!"), "info")
else:
appuifw.note(ru("Файл НЕ сохранен!"), "error")
#Функция вывода информации
def AboutSoft():
appuifw.note(ru("2012\n2012"), "info")
appuifw.app.menu = [(ru("Новый/Очистить"), ClearDoc), (ru("Сохранить в UTF-8"), SaveDoc), (ru("Инфо"), AboutSoft)]
appuifw.app.body = Text = appuifw.Text()
lock = e32.Ao_lock()
os.abort = lock.signal
lock.wait()
Данный код вполне нормально записывает введенный кириллицей текст в файл, но в упор не хочет признавать перенос строк - в итоге в файле все записывается в одну строчку, а в тех местах, где должны были быть переносы строк, располагаются квадратики.
Опытным путем было установлено, что следующий код помогает придти к компромиссу кириллице и переносам строк:
#coding: utf-8
ru=lambda x: x.decode('utf-8')
test = unicode('PPad - примитивная программа для создания текстовых файлов.\nДля начала работы выберите пункт меню Новый/Очистить.', 'UTF-8')
f = open('C:\\test.txt', 'w')
f.write(test.encode('UTF-8').replace('\n','\r\n'))
f.close()
Казалось бы, что выход найден - остается лишь заменить
content = Text.get()
на
content = unicode(Text.get(), "UTF-8")
и дело в шляпе.
Но нет, от такого способа консоль приходит в ярость и негодует:
content = unicode(Text.get(), "UTF-8")
TypeError: decoding Unicode is not supported
Как же мне подружить мой блокнотик и переносы строк?
Ничего магического, все просто. =) Консоль:
Python 2.2.2 (#0, Nov 20 2008, 17:19:59)
[GCC 2.9-psion-98r2 (Symbian build 546)] on symbian_s60
Type "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import appuifw
>>> appuifw.app.body.get()
u'Python 2.2.2 (#0, Nov 20 2008, 17:19:59) \u2029[GCC 2.9-psion-98r2 (Symbian build 546)] on symbian_s60\u2029Type "copyright", "credits" or "license" for more information.\u2029(InteractiveConsole)\u2029>>> import appuifw\u2029>>> appuifw.app.body.get()\u2029'
>>>
В стандартной либе - !:/Resource/Python25/python25.zip - нет. В батарейках PythonScriptShell - C:/Private/e7881dfa/lib.zip - есть.
-------------
добавлено в 04.27: MaddyMax, а как твой код обрабатывает имена файлов в кириллице? Я про это:
fullpath = str(filename) + ".txt"
- «
- 1
- 2
- --
- 717
- 718
- 719
- --
- 974
- 975
- »