标题基本概括了所有内容.这是我的代码:
from urllib2 import urlopen as getpage
print = getpage("www.radioreference.com/apps/audio/?ctid=5586")
Run Code Online (Sandbox Code Playgroud)
这是我得到的追溯错误:
Traceback (most recent call last):
File "C:/Users/**/Dropbox/Dev/ComServ/citetest.py", line 2, in <module>
contents = getpage("www.radioreference.com/apps/audio/?ctid=5586")
File "C:\Python25\lib\urllib2.py", line 121, in urlopen
return _opener.open(url, data)
File "C:\Python25\lib\urllib2.py", line 366, in open
protocol = req.get_type()
File "C:\Python25\lib\urllib2.py", line 241, in get_type
raise ValueError, "unknown url type: %s" % self.__original
ValueError: unknown url type: www.radioreference.com/apps/audio/?ctid=5586
Run Code Online (Sandbox Code Playgroud)
我最好的猜测是urllib无法从不整洁的php URL中检索数据.如果是这种情况,是否有解决方法?如果没有,我做错了什么?
我有一个需要多处理的脚本.我从这个脚本中发现的是多处理模块存在问题.为了测试这个理论,我复制并粘贴了
from multiprocessing import Process
def f(name):
print('hello', name)
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
Run Code Online (Sandbox Code Playgroud)
进入测试脚本并收到以下回溯
Traceback (most recent call last):
File "a.py", line 1, in <module>
from multiprocessing import Process
File "/usr/lib64/python3.3/multiprocessing/__init__.py", line 40, in <module>
from multiprocessing.util import SUBDEBUG, SUBWARNING
File "/usr/lib64/python3.3/multiprocessing/util.py", line 16, in <module>
import threading # we want threading to install it's
File "/usr/lib64/python3.3/threading.py", line 11, in <module>
from traceback import format_exc as _format_exc
File "/usr/lib64/python3.3/traceback.py", line 3, in <module>
import …Run Code Online (Sandbox Code Playgroud) 是否可以在Python中创建自定义回溯?我正在尝试编写一个raise_from()模仿Python 3的函数raise ... from ....
def raise_from(exc, cause):
""" Raises the Exception *exc* from the calling stack-frame,
settings its ``__cause__`` to *cause*. """
exc.__cause__ = cause
try: raise Exception
except Exception:
tb = sys.exc_info()[2]
# Remove the last traceback entry.
prelast_tb = tb
while prelast_tb.tb_next:
prelast_tb = prelast_tb.tb_next
prelast_tb.tb_next = None
raise type(exc), exc, tb
Run Code Online (Sandbox Code Playgroud)
不幸的是,traceback实例的属性是只读的.
我有一个存储在字符串中的函数,它看起来像这样:
func_str = "def <func_name> ..."
Run Code Online (Sandbox Code Playgroud)
我正在使用“exec”评估它并在输入上使用它,如下所示:
exec func_str in locals()
locals()[func_name](inp)
Run Code Online (Sandbox Code Playgroud)
现在这个函数可能有一个异常,我想知道字符串中哪一行导致了它。在解释器中运行它会给出一条错误消息,这正是我想要的:
File "<string>", line 6, in <func_name>
TypeError: can only concatenate tuple (not "int") to tuple
Run Code Online (Sandbox Code Playgroud)
这告诉我字符串中的第六行导致了问题。
有什么方法可以以编程方式捕获这个吗?我看过类似的解决方案,但它们没有解决来自在本地范围内执行的字符串的异常。当尝试使用回溯模块时,我只获得了调用 exec 的外部函数的行号。
谢谢
我在服务器上添加了一个小的调试工具。它记录从获得的堆栈跟踪traceback.format_stack()
它包含一些不完整的行,如下所示:
File "/home/...../base/loop.py", line 361, in run
self.outputs.fd_list, (), sleep)
Run Code Online (Sandbox Code Playgroud)
这不是很有帮助。
源代码行360和361:
rlist, wlist, unused = select.select(self.inputs.fd_list,
self.outputs.fd_list, (), sleep)
Run Code Online (Sandbox Code Playgroud)
如果只有一行可以作为堆栈跟踪的一部分,那么我想说带有函数名称(此处为select.select)的行360 是正确的,因为堆栈是通过调用函数创建的。
无论如何,我希望打印整个(逻辑)行。或至少某些上下文(例如之前的2行)。那可能吗?我的意思是当然要付出足够的努力。
尝试添加行继续符\,但未成功。
EPILOGUE:基于Jean-FrançoisFabre的回答和他的代码,我将使用此功能:
def print_trace():
for fname, lnum, func, line in traceback.extract_stack()[:-1]:
print('File "{}", line {}, in {}'.format(fname, lnum, func))
try:
with open(fname) as f:
rl = f.readlines()
except OSError:
if line is not None:
print(" " + line + " <===")
continue
first = max(0, lnum-3)
# read 2 lines …Run Code Online (Sandbox Code Playgroud) 我是tensorflow的新手,并且正在关注senddex的教程。我不断收到错误-
ValueError: Dimensions must be equal, but are 784 and 500 for
'MatMul_1' (op: 'MatMul') with input shapes: [?,784], [500,500].
Run Code Online (Sandbox Code Playgroud)
我认为引起问题的代码段是-
l1 = tf.add(tf.matmul(data, hidden_1_layer['weights']),
hidden_1_layer['biases'])
l1 = tf.nn.relu(l1)
l2 = tf.add(tf.matmul(data, hidden_2_layer['weights']),
hidden_2_layer['biases'])
l2 = tf.nn.relu(l2)
l3 = tf.add(tf.matmul(data, hidden_3_layer['weights']),
hidden_3_layer['biases'])
l3 = tf.nn.relu(l3)
output = tf.add(tf.matmul(l3, output_layer['weights']),
output_layer['biases'])
return output
Run Code Online (Sandbox Code Playgroud)
虽然我是菜鸟,可能是错的。我的整个代码是-
mnist = input_data.read_data_sets("/tmp/ data/", one_hot=True)
n_nodes_hl1 = 500
n_nodes_hl2 = 500
n_nodes_hl3 = 500
n_classes = 10
batch_size = 100
x = tf.placeholder('float', [None, 784])
y = …Run Code Online (Sandbox Code Playgroud) 有没有办法让以下代码:
import traceback
def log(message):
print "%s: %s" %(traceback.extract_stack()[0:-1][-1][2], message)
def f1():
log("hello")
class cls(object):
def f1(self):
log("hi there")
f1()
mycls = cls()
mycls.f1()
Run Code Online (Sandbox Code Playgroud)
显示:
f1: hello
cls.f1: hi there
Run Code Online (Sandbox Code Playgroud)
代替:
f1: hello
f1: hi there
Run Code Online (Sandbox Code Playgroud)
?
我试图使用模块'inspect'但没有成功......
朱利安
编辑:
这里的要点是'log'函数能够自己检索其调用者名称(使用traceback,inspect或任何必要的平均值).
我不想将类名称或"消息"之外的任何内容传递给"日志"功能.
考虑以下 Python 程序:
code = """
def test():
1/0
"""
filename = "<test>"
c = compile(code, filename, 'exec')
exec(c)
import linecache
linecache.cache[filename] = (len(code), None, code.splitlines(keepends=True), filename)
import traceback
print("Traceback from the traceback module:")
print()
try:
test()
except:
traceback.print_exc()
print()
print("Regular traceback:")
print()
test()
Run Code Online (Sandbox Code Playgroud)
我正在动态定义一个引发异常的函数并将其添加到linecache. 代码的输出是
Traceback from the traceback module:
Traceback (most recent call last):
File "test.py", line 20, in <module>
test()
File "<test>", line 3, in test
1/0
ZeroDivisionError: division by zero
Regular traceback:
Traceback (most …Run Code Online (Sandbox Code Playgroud) 为了使用服务Rollbar,必须禁用用于回溯符号化的位码。我还必须将dSYM文件上传到Rollbar。但是,禁用位码时,我在哪里可以得到dSYM文件?通常,我可以在iTunes connect中下载它们(但似乎只有在启用了位码的情况下才能在iTunes connect中下载它们,否则我错了吗?)。如果禁用,则看不到任何下载链接。
根据如何在没有回溯的情况下退出Python?,调用sys.exit()Python脚本应该在没有回溯的情况下静默退出.
import sys
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
但是,当我使用python -i "exit.py"(或从Notepad ++)从 Windows 7上的命令行启动脚本时,SystemExit会显示异常的回溯.
U:\>python -i "exit.py"
Traceback (most recent call last):
File "exit.py", line 2, in <module>
sys.exit(0)
SystemExit: 0
>>>
Run Code Online (Sandbox Code Playgroud)
为什么sys.exit()从Windows命令行运行时显示回溯?
(供参考,我在Windows 7上使用Python 3.6.4)
traceback ×10
python ×9
cmd ×1
dsym ×1
exception ×1
exit ×1
inspect ×1
ios ×1
parsing ×1
python-2.x ×1
python-3.3 ×1
python-3.x ×1
rollbar ×1
tensorflow ×1
urllib ×1
urllib2 ×1