我花了很长时间才找出了这个错误的一些具体原因。我正在编写一个简单的XML服务器,允许您进行目录列表和可能的其他只读操作。我已经做了一个简单的方法来列出所有的文件夹和文件,并将它们表示为字典:
def list_dir(self, dirname):
"""Returns list of files and directories as a dictionary, where key is name and values is either 'file' or 'dir'"""
dirname = o
我发现了一个错误:
'ascii' codec can't decode byte 0x8b in position 14: ordinal not in range(128)
当尝试做os.walk时。发生此错误是因为目录中的某些文件中有0x8b (非utf8 8)字符。这些文件来自Windows系统(因此是utf-16文件名),但我已经将文件复制到Linux系统中,并使用python2.7(在Linux中运行)遍历目录。
我尝试将unicode开始路径传递给os.walk,它生成的所有文件和目录都是unicode名称,直到出现非utf 8名称为止,然后由于某种原因,
在OS和Python中使用Unicode文件名有点困难。我试图在后面的代码中使用文件名作为正则表达式的输入,但是文件名中使用的编码似乎与sys.getfilesystemencoding()告诉我的不同。使用以下代码:
#!/usr/bin/env python
# coding=utf-8
import sys,os
print sys.getfilesystemencoding()
p = u'/temp/s/'
s = u'åäö'
print 's', [ord(c) for c in s], s
s2 = s.encode(sys.
我用Python打开两个文件,更改和替换其中的一些内容,并将新输出写入第三个文件。我的2个输入文件是XMLs,编码为'UTF-8,没有BOM‘,其中有德语、?、µ和?当我在Notepad++中打开我的输出XML文件时,没有指定编码(即在“编码”选项卡中没有选中编码)。My?、?、µ和?被转换成类似于
ü
在Python中创建输出时,我使用
with open('file', 'w') as fout:
fout.write(etree.tostring(tree.getroot()).decode('utf-8'))
我一直在阅读关于unicode和python的左、右和中。我想我知道什么是编码/解码,但是当我尝试使用一个标准的库方法来操作一个文件名时,我得到了臭名昭著的:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 19:
ordinal not in range(128)
在本例中,\xe9代表'é',无论我是从os.path.join()还是从shutil.copy()调用它,它都会抛出相同的错误。据我所知,它与python的默认编码
我知道有类似的问题发布,但我认为我遇到的问题与他们相比略有不同。请容忍我;我4个月前才开始使用Python,我确信我的不成熟表现出来了!
我正在编写一个程序,使用Protovis插件在树状图中显示来自CSV文件的LinkedIn数据。据我所知,这个插件的设置是正确的,这一切都是基于O‘’Reilly的Mining The Social Web。但是,当我在IDLE中运行我的代码时,我得到以下错误消息:
Traceback (most recent call last):
File "C:/Users/Envy 15/Desktop/MASIDendo", line 115,
我有一个PHP脚本,它在目录中创建了一个文件列表,但是PHP只能看到英文的文件名,而完全忽略了其他语言(如俄语或亚洲语言)中的文件名。
经过大量的努力,我找到了唯一适合我的解决方案--使用一个将文件重命名为UTF8的python脚本,这样PHP就可以在此之后处理它们。
(在PHP完成文件处理之后,我将这些文件重命名为英语,我不会将它们保存在UTF8中)。
我使用了以下python脚本,运行良好:
import sys
import os
import glob
import ntpath
from random import randint
for infile in glob.glob(
在OS X和Python中与Unicode文件名争执不休。我试图在后面的代码中使用文件名作为正则表达式的输入,但是文件名中使用的编码似乎与sys.getfilesystemencoding()告诉我的不同。采取以下代码: #!/usr/bin/env python
# coding=utf-8
import sys,os
print sys.getfilesystemencoding()
p = u'/temp/s/'
s = u'åäö'
print 's', [ord(c) for c in s], s
s2 = s.encode(sy