【发布时间】:2016-10-03 03:34:01
【问题描述】:
我在尝试打开目录中的所有 .txt 文件时遇到错误,当目录中只有 1 个 txt 文件时,我的代码可以正常工作,否则会弹出此消息:
Traceback (most recent call last):
File "/Users/Name/Desktop/TCSS 142/Project 2/project2.py", line 17, in <module>
for line in file:
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0x92 in position 3: ordinal not in range(128)
这是我的代码:
import glob
# Returns a list of all filenames ending in .txt
# precondition: none
# postcondition: a list of all filenames in the current directory
# with a .txt extension
def getFilesInDir():
filenames = glob.glob('./*.txt')
for i in range(len(filenames)):
filenames[i] = filenames[i][2:]
return filenames
files = getFilesInDir()
for el in files:
file = open(el, 'r')
for line in file:
print(line)
file.close()
【问题讨论】:
-
尝试在文件顶部添加
# -*- coding: utf-8 -*-这个 -
你能发布完整的回溯吗?
-
0x92 是(单个,正确的)智能引号,它可能在您的一个文件中,并且可能隐藏为一个简单的 ascii 撇号
'。 -
@Evert 你能解释一下什么是完整的回溯吗?
-
你不也用
codecs吗?因为您的错误是关于codecs.ascii_decode并且您没有在代码中使用它。
标签: list python-3.x encoding ascii utf