Matt Wheeler <m...@funkyhat.org> 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: taro.extractall(members=itar(taro),path=edir) def itar(tar): for ti in tar: # minimal protection against dangerous file names # see http://bugs.python.org/issue21109#msg215656 ti.name = subst(r'^(?i)([a-z]:)?(\.\.)?[/\\]','',ti.name) print('untar "%s"' % ti.name) 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: horlac...@tik.uni-stuttgart.de Universitaet Stuttgart Tel: ++49-711-68565868 Allmandring 30a Fax: ++49-711-682357 70550 Stuttgart (Germany) WWW: http://www.tik.uni-stuttgart.de/ -- https://mail.python.org/mailman/listinfo/python-list