Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 将代码链接打印到PyCharms控制台_Python 3.x_Pycharm - Fatal编程技术网

Python 3.x 将代码链接打印到PyCharms控制台

Python 3.x 将代码链接打印到PyCharms控制台,python-3.x,pycharm,Python 3.x,Pycharm,我目前正在为PyCharm中的Django应用程序编写一些复杂的测试。因此,我在控制台上使用了所有这些花哨的颜色,这可以通过打印一些特殊的代码来实现 我现在想知道是否也可以打印控制台中特定代码行的超链接。对于每个stacktrace,PyCharm都会为所有文件生成这样的链接,但我自己能做到吗 这将非常有帮助,直接从测试输出跳转到特定行,而不是手动导航到。我想这有点晚了,我对它不是100%满意,但它只是工作(至少对于PyCharm 2019.2)。如果您以 File "{file_path}",

我目前正在为PyCharm中的Django应用程序编写一些复杂的测试。因此,我在控制台上使用了所有这些花哨的颜色,这可以通过打印一些特殊的代码来实现

我现在想知道是否也可以打印控制台中特定代码行的超链接。对于每个stacktrace,PyCharm都会为所有文件生成这样的链接,但我自己能做到吗


这将非常有帮助,直接从测试输出跳转到特定行,而不是手动导航到。

我想这有点晚了,我对它不是100%满意,但它只是工作(至少对于PyCharm 2019.2)。如果您以

File "{file_path}", line {line_number}
然后PyCharm将自动将该行转换为指向相应文件和行的链接。例如:

print("File \"C:/Workspace/enventa-next/suites/suite_standard/tst_Inventur/test.py\", line 3")
将跳转到或打开文件,并将焦点移到第三行。 我认为与自定义内容的链接是不可能的。

功能:
print\u链接(文件、行)
在我的帮助下,我创建了
print_link
,您可以在PyCharm控制台中轻松创建链接。它使用内置模块为
文件
创建默认值,以指向调用它的行

导入检查
def打印链接(文件=无,行=无):
“”“将PyCharm中的链接打印到文件中的一行。”。
默认为调用此函数的行。”“”
如果文件为“无”:
file=inspect.stack()[1]。文件名
如果行为“无”:
line=inspect.stack()[1]。行号
string=f'File“{File}”,第{max(第1行)}行。替换(“\\”,“/”)
打印(字符串)
返回字符串
#此行和文件的默认值(generallibrary中的randomtesting.py,第14行)
打印链接()
#通过父目录相对链接到另一个存储库
打印链接(“../generalvector/generalvector/vector.py”,23)
#链接到与randomtesting.py位于同一目录中的自述文件
打印链接(“README.md”,1)
#绝对链接到任何文件
打印链接(“A:/hello.txt”,1)

蓝色文本表示链接成功

功能:
print\u link\u to\u obj(obj)
在前面的功能的基础上,我们可以创建
print\u link\u to\u obj
,以轻松、动态地创建指向任何对象的链接,该对象的源代码可供
inspect
使用

def打印链接到obj(obj):
“”“打印PyCharm中指向模块、函数、类、方法或属性的链接。”“”
如果存在(对象、属性):
obj=obj.fget
file=inspect.getfile(obj)
line=inspect.getsourcelines(obj)[1]
打印链接(文件=文件,行=行)
#创建指向上述定义的链接
打印链接到对象(打印链接)
#创建指向整个inspect模块的链接
打印链接到对象(检查)
#在inspect中创建指向函数的链接
打印链接到对象(检查堆栈)
#在inspect中创建指向类中属性的链接
打印链接到对象(inspect.BoundArguments.args)

包裹: 如果不想复制粘贴功能,请安装我的跨平台软件包:

pip安装通用库
从generallibrary导入打印链接,打印链接到对象

您试图通过此实现什么?我正在迭代所有基于类的视图,并为每个视图执行某种自动测试。进度显示在控制台上。如果某个视图未能通过测试,我希望单击控制台中的链接,直接指向该视图,这样我可以更快地找到失败的代码,而不是在搜索函数中键入视图名称。这不是一个大问题,但是这个链接会更舒服。对我来说(PyCharm 2020.2)似乎没有效果。在2020.2.3专业版中对我有效。注意:如果使用windows和反斜杠,则需要确保使用附加的反斜杠将其转义。(最好只使用正斜杠,也可以。)
“%(文件名)s:%(行号)d”
的工作方式相同。现在,如果我能弄清楚为什么它会作为链接打印在我的Pytest日志和scratch文件中,而不是打印在我的测试类中。