This snippet defines a function printat()
which adds line and file information to the normal print()
function output. The intended use is a quick and dirty debugging information for everyday's use. A more complete solution is to use a logging/debugging/tracing framework.
Print with line and file information
#!/usr/bin/env python
# -*-coding: utf8-*-
# Module: printat (python 2 and 3)
# Author: Gribouillis for the python forum at www.daniweb.com
# Date: 2014 June 02
# License: Public Domain
# Use this code freely
from __future__ import (absolute_import, division,
print_function, unicode_literals)
__version__ = "0.0.3"
import sys
def this_line(level = 0):
"""return a pair (lineno, filename) where this function is called
If level > 0, go back up to that level in the calling stack.
The filename is the name in python's co_filename member
of code objects.
"""
frame = sys._getframe(level + 1)
try:
lineno = frame.f_lineno
filename = frame.f_code.co_filename
return (lineno, filename)
finally:
del frame
def printat(*args, **kwargs):
"""Print function with additional line number and filename information.
Adds a string such as "at line 31 in foo.py" to the printed output,
to indicate the position where the printat() function was called.
All the calls to print() in a program can be changed
to provide additional information by adding
print = printat
at the top of the program.
"""
lineno, filename = this_line(1)
args += ('at line {n} in {f}'.format(n=lineno, f=filename),)
print(*args, **kwargs)
if __name__ == '__main__':
printat("Hello World!")
""" my output -->
$ python printat.py
Hello World! at line 49 in printat.py
"""
chriswelborn 63 ...
Gribouillis 1,391 Programming Explorer Team Colleague
Gribouillis 1,391 Programming Explorer Team Colleague
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.