gpt4 book ai didi

python - 相当于 Python 中的 BASH_XTRACEFD 重定向

转载 作者:太空宇宙 更新时间:2023-11-03 15:58:16 24 4
gpt4 key购买 nike

如何在 Python2.7 中模拟以下 BASH 脚本? (重定向运行到某个文件的命令):

exec 3> >(sed -e 's/^[+]* /[BASH] /' >> code_that_ran.tmp) 
export BASH_XTRACEFD=3
set -x

我尝试过的:

$ python -m trace -t prog.py

问题是我需要在脚本内运行跟踪,以便我可以将其重定向到一个文件,对其执行一些逻辑,而不是如上所述在 python 执行行上执行

谢谢!:)

最佳答案

根据您的描述:

I need the trace to be run inside the script so I could redirect it to a file

$ python -m trace -t prog.py

这会将跟踪结果输出到标准输出,我想您想将该结果存储到文件中。以下是基于 official documentation 的示例.

prog.py

def main():
pass

if "__main__" == __name__:
main()

trace_run.py

import sys
import trace
import imp

# create a Trace object, telling it what to ignore, and whether to do tracing or line-counting or both.
tracer = trace.Trace(
ignoredirs=[sys.prefix, sys.exec_prefix],
trace=0,
count=1)

# load target program dynamically
target = imp.load_source(sys.argv[1], './'+sys.argv[1])

# run the main function of program using the given tracer
tracer.runfunc(target.main)

# make a report, placing output in the current directory
r = tracer.results()
r.write_results(show_missing=True, coverdir=".")

然后只需运行python trace_run.py prog.py

prog.cover

>>>>>> def main():
1: pass

>>>>>> if "__main__" == __name__:
>>>>>> main()

关于python - 相当于 Python 中的 BASH_XTRACEFD 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40586286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com