[Python] Кодировка и execfile - PullRequest
4 голосов
/ 02 мая 2011

Я пытаюсь сделать что-то подобное с помощью Python 2.4:

#!/usr/bin/python
# -*- coding: utf-8 -*-

afile = unicode('C:\\國立國語院.py', 'UTF-8')
execfile(afile.encode("UTF-8",'replace'))

И я получаю эту ошибку:

IOError: [Errno 2] No such file or directory: 'C:\\\xef\xbb\xbf\xe5\x9c\x8b\xe7\xab\x8b\xe5\x9c\x8b\xe8\xaa\x9e\xe9\x99\xa2.py'

Так что мой вопрос, как я могу сделать исполняемый файл, еслифайл, который я хочу запустить, имеет имя с корейскими символами?

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 02 мая 2011

@ ответ Томаса К. должно работать (работает в Linux и не работает в Wine на Python2.4).

execfile() можетэмулируется с использованием exec:

#!/usr/bin/python
# -*- coding: utf-8 -*-

exec open(ur'C:\國立國語院.py').read()
2 голосов
/ 02 мая 2011

Я думаю, что вы должны просто иметь возможность execfile(afile) с аргументом Unicode в Windows, но я не могу это проверить.

Если нет, получите кодировку файловой системы:

import sys
fsenc = sys.getfilesystemencoding()
execfile(afile.encode(fsenc))
...