我得到了UnicodeDecodeError和traceback.print_exc(file=sys.stdout)。我使用Python3.4,但是Python2.7没有遇到问题。
我是不是漏掉了什么?如何确保sys.stdout将正确的编码/解码传递给traceback.print_exc()?
我的代码看起来类似于以下内容:
try:
# do something which might throw an exception
except Exception as e:
# do something
traceback.print_exc(file=sys.std
我有一个包含许多子目录的目录。
在目录的底部有一些.txt文件,我需要从其中提取第二行。
import os
import os.path
import linecache
for dirpath, dirnames, filenames in os.walk("."):
for filename in [f for f in filenames if f.endswith(".txt")]:
#print os.path.join(dirpath, filename)
#print filename
p
我正在读取文本文件中的特定行。这是我的代码:
file.seek(0)
for j, ln in enumerate(file):
if j == line_number
line = ln # i'm getting the line
break
当我在“循环”中使用这段代码时,它会产生一个长时间的,其中line_number是随机的。我也尝试过linecache.getline(),但是每次都需要调用linecache.clearcache(),所以这并不好。
有更快的解决办法吗?记忆不重要。
我需要从被调用者那里获取调用者信息(什么文件/什么行)。我了解到我可以使用inpect模块来实现这一目的,但不能确切地说是如何实现的。
如何使用inspect获取这些信息?或者,有没有其他方法来获取信息?
import inspect
print __file__
c=inspect.currentframe()
print c.f_lineno
def hello():
print inspect.stack
?? what file called me in what line?
hello()
我一直在阅读CSV模块上的Python:
我注意到,它没有提到任何方法,让读取器对象返回它当前正在读取的行的数目,或者它当前正在进行的迭代。这似乎是一个广泛需要的功能。所以,我想知道怎样才能做到这一点:
reader = csv.DictReader(readFile)
for row in reader:
# do something
# now want to find the line number that row corresponds to
或者如果这是不可能的,为什么会这样。
因此,我花了一段时间才确定了这一次的原因,但仍然对这一次的可能性感到茫然。我最近切换到了python3,在试图导入matplotlib时遇到了一个巨大的错误:
Traceback (most recent call last):
File "C:/Users/y2kbugger/Desktop/test.py", line 6, in <module>
File "C:\Anaconda2\envs\mypackage\lib\site-packages\matplotlib\__init__.py", lin
e 124, in <m
在用Python读取utf-8文本文件时,可能会遇到非法的utf字符。接下来,您可能会尝试查找包含非法字符的行(数字),但这可能会失败。下面的代码说明了这一点。
步骤1:创建一个包含非法utf-8字符的文件(a1十六进制=161个小数点)
filename=r"D:\wrong_utf8.txt"
longstring = "test just_a_text"*10
with open(filename, "wb") as f:
for lineno in range(1,100):
if lineno==85: