Python:如果名为"foobar"的文件被打开,则引发异常

gue*_*tli 6 python debugging

我面前有一个巨大的代码库,我有一个名为"foobar"的文件被写入的地方.

我不知道这个文件的读取位置.

我的想法如何解决这个问题:

  1. 做猴子补丁或嘲笑.如果打开具有此名称的文件,则会引发异常.
  2. 运行所有测试并查看引发异常的位置.

如果具有给定名称的文件被打开,如何让解释器引发异常?

我确信我搜索的地方是纯python,而不是c-extension.

我使用Python 2.7

ndp*_*dpu 16

你可以覆盖(shadow)内置的open函数.在主模块中添加:

import __builtin__

open_file = __builtin__.open

def fake_open(filename, *args, **kwargs):
    if filename == 'foobar':
        raise Exception('foobar filename')
    else:
        return open_file(filename, *args, **kwargs)

__builtin__.open = fake_open
Run Code Online (Sandbox Code Playgroud)

  • 通过这个答案,我在几秒钟内找到了106k Python源代码行中相应的open().谢谢! (3认同)