modifying a standard module?

Ulli Horlacher framstag at
Fri Feb 12 17:46:59 EST 2016

Matt Wheeler <m at> wrote:

> > How can I substitute the standard module function tarfile.extractall() with
> > my own function?
> import tarfile
> def new_extractall(self, *args, **kwargs):
>     print("I am a function. Woohoo!")
> tarfile.TarFile.extractall = new_extractall

This is more easy than I could imagined :-)
It is in my Python notes, now.

> But bear in mind that that will change tarfile.extractall for every
> single module that imports it within the same python process. Is that
> really what you want?

Yes. I have no own modules. Just one program file.

> Is there a reason you can't subclass TarFile as others have suggested?

The reason: I have no ideas on classes :-}

Of course, I should have to learn about, but until now it was not necessary.
The other solutions in this thread are sufficent for me.

Meanwhile I have implemented the iterator function:


def itar(tar):
  for ti in tar:
    # minimal protection against dangerous file names
    # see = subst(r'^(?i)([a-z]:)?(\.\.)?[/\\]','',
    print('untar "%s"' %
    yield ti

Perfekt solution for me :-)
Thanks to all.

> If you must patch the standard library tarfile module then I would
> suggest patching it to have an extra, default False, argument to
> enable your printing behaviour, so you don't risk messing up anyone
> else's use of it.

Yes, a good idea.

Ullrich Horlacher              Server und Virtualisierung
Rechenzentrum IZUS/TIK         E-Mail: horlacher at
Universitaet Stuttgart         Tel:    ++49-711-68565868
Allmandring 30a                Fax:    ++49-711-682357
70550 Stuttgart (Germany)      WWW:

More information about the Python-list mailing list