[Python]编码和执行文件

[Python]编码和执行文件,python,windows,unicode,encoding,execfile,Python,Windows,Unicode,Encoding,Execfile,我正在尝试使用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\

我正在尝试使用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'
所以我的问题是,如果我想执行的文件有一个带有韩文字符的名称,我如何执行execfile


非常感谢您

我认为您应该能够在Windows上使用unicode参数执行
execfile(afile)
,但我无法测试它

如果不是,则获取文件系统编码:

import sys
fsenc = sys.getfilesystemencoding()
execfile(afile.encode(fsenc))
应该可以工作(它在Linux上工作,在Python2.4上的Wine中不工作)

可以使用以下方法进行模拟:


谢谢你的帮助,我就是这样做的/usr/bin/python#--编码:utf-8--导入系统,os-afile=u'C:\\國立國語院.py'fsenc=sys.getfilesystemencoding()execfile(afile.encode(fsenc)),我仍然没有这样的文件或目录:“C:\\\??.py但是如果您只将unicode文件名指定给
execfile
,而不先对其进行编码,会发生什么?您根本不需要显式地对文件名进行编码(尽管特定的Python版本可能会影响这一点-这是Python在最近版本中改进的一个方面)。如果我只给出unicode文件名,我会出现以下错误:
UnicodeEncodeError:“ascii”编解码器无法对位置3-7中的字符进行编码
#Kvoste我已经在我的电脑(win7中文版)上测试了这个答案,它运行时没有任何问题。PS:My getfilesystemencoding()是“mbcs”。PEP 277允许大多数文件处理接口接受Unicode字符串以访问超出文件系统编码限制的Windows文件名。但是,
execfile
未被授予此功能,可能是因为它被视为已弃用;从那时起,它就从Python中被删除了,通常预期的替代品是
exec open(…).read()
。您在
os.listdir(“C:\\”)和
os.listdir(u“C:\\”)
中看到该文件的名称是什么?我与exevfile有相同的问题:(确切的示例/错误?这对我来说很有效,只要实际字符串绝对正确,例如
exec open(u'C:\\\u570b\u7acb\u570b\u8a9e\u9662.py')
来隔离源代码编码问题。显然,如果目标
.py
文件本身包含非ASCII字符,它也需要
编码
头注释。
#!/usr/bin/python
# -*- coding: utf-8 -*-

exec open(ur'C:\國立國語院.py').read()