我想在调试器下运行代码,并在打开文件时停止它。我想这样做,不管是用什么技术打开文件。有两种方法可以打开文件(如果有更多的文件,那么我也希望在该情况下停止代码),并且我希望在执行其中一种文件时停止代码:
with open(filename, "wb") as outFile:
或者
object = open(file_name [, access_mode][, buffering])
这在pdb
或ipdb
下可能吗?你知道吗
PS:如果我知道可以手动设置断点,我就不知道文件打开的位置。我还可以grep
为open(
设置断点,但如果我的代码使用模块,这可能会有问题。另外,如果文件不是通过open
以另一种方式打开的(我不知道这是否可能只是猜测,可能是为了附加等),这将不起作用。你知道吗
理想情况下,您可以在open内置函数中设置断点,但这是不可能的。相反,您可以重写它,并将断点放在那里:
当然,你会在任何文件打开时被打破,而不仅仅是你想要的那个。你知道吗
因此,您可以对其进行一点改进,并放置一个条件断点:
用
python -m pdb prog.py
运行python程序。你知道吗如果您不知道open调用在哪里,则需要在尽可能早的时间点修补原始的
open
(例如__main__
-guard),如下所示:相关问题 更多 >
编程相关推荐